تعديل الـ Hashes
جزء من قسم الأساسيات في رحلة Ruby على Coddy — الدرس 75 من 88.
إن الـ Hashes ليست ثابتة بمجرد إنشائها. يمكنك إضافة أزواج مفتاح-قيمة (key-value pairs) جديدة، وتحديث القيم الموجودة، وإزالة المدخلات أثناء تشغيل برنامجك.
لإضافة زوج جديد أو تحديث قيمة موجودة، قم بالتعيين للمفتاح باستخدام الأقواس المربعة:
person = {"name" => "Alice", "age" => 25}
person["city"] = "Paris" # يضيف زوج مفتاح-قيمة جديداً
person["age"] = 26 # يحدّث القيمة الموجودة
puts person # المخرجات: {"name"=>"Alice", "age"=>26, "city"=>"Paris"}إذا كان المفتاح موجوداً، يتم استبدال القيمة. وإذا لم يكن موجوداً، يتم إضافة زوج جديد إلى الـ hash.
لإزالة زوج مفتاح-قيمة، استخدم طريقة delete مع المفتاح الذي تريد إزالته:
person = {"name" => "Alice", "age" => 25, "city" => "Paris"}
person.delete("city")
puts person # المخرجات: {"name"=>"Alice", "age"=>25}تُرجع الطريقة delete القيمة التي تمت إزالتها، وهو ما قد يكون مفيداً إذا كنت بحاجة إلى استخدامها:
person = {"name" => "Alice", "age" => 25}
removed_age = person.delete("age")
puts removed_age # المخرجات: 25إذا حاولت حذف مفتاح غير موجود، فإن Ruby ببساطة تعيد nil دون إثارة خطأ.
التحدي
سهلاقرأ أربعة أسطر من المدخلات:
- اسم الطالب (سلسلة نصية string)
- الدرجة الأولية (عدد صحيح integer)
- درجة جديدة للتحديث (عدد صحيح integer)
- زوج مفتاح-قيمة جديد بتنسيق
key:value(على سبيل المثال،subject:Math)
أنشئ hash يسمى student مع أزواج المفتاح والقيمة الأولية التالية:
"name"مرتبط باسم الطالب"grade"مرتبط بالدرجة الأولية (كعدد صحيح)
ثم قم بإجراء هذه التعديلات:
- قم بتحديث مفتاح
"grade"بقيمة الدرجة الجديدة - أضف زوج مفتاح-قيمة جديداً باستخدام المفتاح والقيمة من المدخل الرابع (يجب أن تظل القيمة سلسلة نصية)
- احذف مفتاح
"name"من الـ hash وقم بتخزين القيمة المحذوفة
اطبع الاسم المحذوف في السطر الأول، ثم اطبع الـ hash النهائي في السطر الثاني.
على سبيل المثال، إذا كانت المدخلات هي Alice، و 85، و 92، و subject:Math، يجب أن تكون المخرجات:
Alice
{"grade"=>92, "subject"=>"Math"}إذا كانت المدخلات هي Bob، و 70، و 75، و status:passing، يجب أن تكون المخرجات:
Bob
{"grade"=>75, "status"=>"passing"}إذا كانت المدخلات هي Charlie، و 100، و 95، و note:excellent، يجب أن تكون المخرجات:
Charlie
{"grade"=>95, "note"=>"excellent"}ورقة مرجعية
لإضافة زوج مفتاح-قيمة جديد أو تحديث قيمة موجودة في الـ hash، استخدم الأقواس المربعة:
person = {"name" => "Alice", "age" => 25}
person["city"] = "Paris" # يضيف زوج مفتاح-قيمة جديد
person["age"] = 26 # يحدّث القيمة الموجودة
puts person # المخرجات: {"name"=>"Alice", "age"=>26, "city"=>"Paris"}إذا كان المفتاح موجوداً، يتم استبدال القيمة. وإذا لم يكن موجوداً، يتم إضافة زوج جديد.
لإزالة زوج مفتاح-قيمة، استخدم التابع delete:
person = {"name" => "Alice", "age" => 25, "city" => "Paris"}
person.delete("city")
puts person # المخرجات: {"name"=>"Alice", "age"=>25}يعيد التابع delete القيمة التي تمت إزالتها:
removed_age = person.delete("age")
puts removed_age # المخرجات: 25إذا حاولت حذف مفتاح غير موجود، فإن Ruby تعيد nil دون إثارة خطأ.
جرّب بنفسك
# قراءة المدخلات
name = gets.chomp
initial_grade = gets.to_i
new_grade = gets.to_i
key_value_pair = gets.chomp
# TODO: اكتب الكود الخاص بك أدناه
# 1. أنشئ hash يسمى 'student' بمفاتيح "name" و "grade"
# 2. قم بتحديث مفتاح "grade" بقيمة الدرجة الجديدة
# 3. قم بتحليل key_value_pair وإضافته إلى الـ hash
# 4. احذف مفتاح "name" وقم بتخزين القيمة المحذوفة
# طباعة الاسم المحذوف
puts removed_name
# طباعة الـ hash النهائي
puts studentيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالثالمعاملات المنطقية - الجزء الرابع7حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على مدخلات المستخدم2المتغيرات وأنواع البيانات
الأرقام والمتغيراتنوع البيانات Stringنوع البيانات Booleanنوع البيانات Symbolالتحقق من أنواع البياناتقواعد التسميةملخص - إنشاء المتغيرات8الحلقات التكرارية
حلقة For مع النطاقاتحلقة WhileBreakNextمراجعة - المضروب (Factorial)حلقة Timesحلقة Untilالحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)3المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمةاختصارات العمليات الحسابيةمراجعة - العمليات الرياضية البسيطةمعاملات المقارنة6أساسيات الإدخال والإخراج
الإخراج باستخدام putsالإخراج باستخدام print و pالإخراج باستخدام المتغيراتالإدخال باستخدام getsدالة Chompتحويل أنواع البياناتمراجعة - حاسبة العمرمراجعة - صح أم خطأ