Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الـ Symbols كمفاتيح للـ Hash

جزء من قسم الأساسيات في رحلة Ruby على Coddy — الدرس 78 من 88.

حتى الآن، كنت تستخدم السلاسل النصية (strings) كمفاتيح للـ hash باستخدام صيغة الـ hash rocket. ومع ذلك، يستخدم مطورو Ruby عادةً الرموز (symbols) كمفاتيح بدلاً من ذلك، مما يوفر نهجاً أكثر نظافة وكفاءة.

هل تتذكر الرموز (symbols) من قبل؟ إنها معرفات خفيفة الوزن وغير قابلة للتغيير تبدأ بنقطتين رأسيتين. عند استخدام الرموز كمفاتيح، توفر Ruby صيغة مختصرة خاصة:

person = {name: "Alice", age: 25, city: "Paris"}

puts person  # المخرجات: {:name=>"Alice", :age=>25, :city=>"Paris"}

لاحظ كيف يحل name: محل :name =>. يعمل هذا الاختصار فقط عندما يكون المفتاح رمزاً (symbol). للوصول إلى القيم، استخدم الرمز مع الأقواس المربعة:

person = {name: "Alice", age: 25}

puts person[:name]  # المخرجات: Alice
puts person[:age]   # المخرجات: 25

تتم إضافة وتعديل المدخلات بنفس الطريقة:

person = {name: "Alice"}

person[:city] = "Paris"
person[:name] = "Bob"

puts person  # المخرجات: {:name=>"Bob", :city=>"Paris"}

تُفضل الرموز (Symbols) كمفاتيح للـ hash لأنها أسرع في المقارنة من النصوص (strings) وتستهلك ذاكرة أقل. ستصادف هذا النمط في جميع أنحاء كود Ruby، لذا من المفيد التعود عليه.

challenge icon

التحدي

سهل

اقرأ ثلاثة أسطر من المدخلات:

  1. علامة تجارية للسيارة (string)
  2. اسم الطراز (string)
  3. السنة (integer)

أنشئ hash يسمى car باستخدام صيغة الرمز المختصرة (على سبيل المثال، key: value) مع أزواج المفتاح والقيمة التالية:

  • :brand مرتبط بالعلامة التجارية للسيارة
  • :model مرتبط باسم الطراز
  • :year مرتبط بالسنة (كعدد صحيح)

ثم قم بإجراء العمليات التالية:

  1. اطبع قيمة المفتاح :model
  2. أضف مفتاحاً جديداً :color بالقيمة "black"
  3. قم بتحديث المفتاح :year عن طريق إضافة 1 إلى قيمته الحالية
  4. اطبع الـ hash النهائي

على سبيل المثال، إذا كانت المدخلات هي Toyota و Camry و 2020، يجب أن يكون المخرج:

Camry
{:brand=>"Toyota", :model=>"Camry", :year=>2021, :color=>"black"}

إذا كانت المدخلات هي Honda و Civic و 2018، يجب أن يكون المخرج:

Civic
{:brand=>"Honda", :model=>"Civic", :year=>2019, :color=>"black"}

إذا كانت المدخلات هي Ford و Mustang و 2023، يجب أن يكون المخرج:

Mustang
{:brand=>"Ford", :model=>"Mustang", :year=>2024, :color=>"black"}

ورقة مرجعية

توفر لغة Ruby صيغة مختصرة لإنشاء الـ hashes باستخدام مفاتيح الرموز (symbols):

person = {name: "Alice", age: 25, city: "Paris"}

هذا يعادل استخدام صيغة "hash rocket" مع الرموز:

person = {:name => "Alice", :age => 25, :city => "Paris"}

للوصول إلى القيم من hash بمفاتيح رموز، استخدم الأقواس المربعة مع الرمز:

puts person[:name]  # المخرجات: Alice
puts person[:age]   # المخرجات: 25

تعمل إضافة وتعديل المدخلات بنفس الطريقة المتبعة مع مفاتيح النصوص (strings):

person[:city] = "Paris"  # إضافة زوج مفتاح-قيمة جديد
person[:name] = "Bob"    # تعديل قيمة موجودة

تُفضل الرموز (Symbols) كمفاتيح للـ hash لأنها أسرع في المقارنة من النصوص وتستخدم ذاكرة أقل.

جرّب بنفسك

# قراءة المدخلات
brand = gets.chomp
model = gets.chomp
year = gets.chomp.to_i

# TODO: اكتب الكود الخاص بك أدناه
# 1. أنشئ hash يسمى 'car' باستخدام صيغة الرموز المختصرة مع المفاتيح :brand و :model و :year

# 2. اطبع قيمة المفتاح :model

# 3. أضف مفتاحاً جديداً :color بالقيمة "black"

# 4. قم بتحديث المفتاح :year بإضافة 1 إلى قيمته الحالية

# 5. اطبع الـ hash النهائي
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات