إضافة طالب
جزء من قسم المنطق وتدفق التنفيذ في رحلة Ruby على Coddy. الدرس 49 من 56.
عرّف طريقة add_student تسجّل طالبًا جديدًا في التجزئة المشتركة student_records.
رفض التكرارات هو الفرع الوحيد؛ بمجرد وجود الطالب، أبلغ عن ذلك وعُد دون الكتابة فوق السجل.
التحدي
سهلفي أعلى ملفك، أبقِ على student_records = {}. ثم عرّف طريقة add_student(name, age, courses) تقوم بما يلي:
- إذا كان
nameمفتاحًا موجودًا بالفعل فيstudent_records، فاطبعStudent '<name>' already exists.ثم أعد التنفيذ. - وإلا، فخزّن
{ age: age, grades: [], courses: courses }تحت المفتاحnameواطبعStudent '<name>' added.
في أسفل ملفك، استبدل كتلة الاختبار بما يلي:
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts student_records.inspectالناتج المتوقع هو:
Student 'Alice' added.
Student 'Bob' added.
Student 'Alice' already exists.
{"Alice"=>{:age=>20, :grades=>[], :courses=>["Math", "Physics"]}, "Bob"=>{:age=>22, :grades=>[], :courses=>["Biology", "Chemistry"]}}بما أن الطرق لا يمكنها الوصول إلى المتغيرات المحلية من البرنامج النصي المحيط بها، فعرّف student_records باستخدام $student_records (متغير عام) لكي تتمكن الطريقة من قراءته وتحديثه. استخدم هذا الاسم داخل الطريقة أيضًا.
جرّب بنفسك
$student_records = {}
# TODO: عرّف add_student(name, age, courses) باستخدام def، وامنع إضافة السجلات المكررة،
# وخزّن { age:, grades: [], courses: }، واطبع رسالة تفيد بأنه أُضيف أو أنه موجود بالفعل
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts $student_records.inspect
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1السلاسل النصية بعمق
نظرة عامة على أساليب السلاسل النصيةاستيفاء السلاسل النصيةالتكرار عبر السلاسل النصيةالتقسيم والضممراجعة - ناسج السلاسل النصية4Blocks، Procs و Lambdas
ما هي الكتلة؟do..end مقابل الأقواس المعقوفةالكلمة المفتاحية yieldمعاملات الكتلةProcs و Lambdasمراجعة - مكرّر مخصّص7Hashes - الجزء الثاني
Hash.new مع القيم الافتراضيةالتكرار عبر HashesHashes متداخلةالدمج والتحويلمراجعة - عدّاد التكرار10مشروع - سجلات الطلاب
نظرة عامة على المشروعإضافة طالب5قوة Enumerable
Select و Rejectتسلسل MapReduce / Injectcount، all?، any?، none?group_by و partitionsort_by، min_by، max_byمراجعة - خط أنابيب البيانات3المصفوفات ثنائية الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالتكرار عبر المصفوفات ثنائية الأبعادالأنماط الشائعة للمصفوفات ثنائية الأبعادمراجعة - عمليات المصفوفات6المشروع - مدير المكتبة
نظرة عامة على المشروعإضافة كتابتدرّب بنفسك: مترجم Ruby عبر الإنترنت