الـ 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، لذا من المفيد التعود عليه.
التحدي
سهلاقرأ ثلاثة أسطر من المدخلات:
- علامة تجارية للسيارة (string)
- اسم الطراز (string)
- السنة (integer)
أنشئ hash يسمى car باستخدام صيغة الرمز المختصرة (على سبيل المثال، key: value) مع أزواج المفتاح والقيمة التالية:
:brandمرتبط بالعلامة التجارية للسيارة:modelمرتبط باسم الطراز:yearمرتبط بالسنة (كعدد صحيح)
ثم قم بإجراء العمليات التالية:
- اطبع قيمة المفتاح
:model - أضف مفتاحاً جديداً
:colorبالقيمة"black" - قم بتحديث المفتاح
:yearعن طريق إضافة 1 إلى قيمته الحالية - اطبع الـ 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 النهائييتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالثالمعاملات المنطقية - الجزء الرابع7حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على مدخلات المستخدم2المتغيرات وأنواع البيانات
الأرقام والمتغيراتنوع البيانات Stringنوع البيانات Booleanنوع البيانات Symbolالتحقق من أنواع البياناتقواعد التسميةملخص - إنشاء المتغيرات8الحلقات التكرارية
حلقة For مع النطاقاتحلقة WhileBreakNextمراجعة - المضروب (Factorial)حلقة Timesحلقة Untilالحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)11المصفوفات
إنشاء المصفوفاتالوصول إلى عناصر المصفوفةتعديل المصفوفاتدوال المصفوفاتمراجعة - مصفوفة النواتجمراجعة - المصفوفة المعكوسةاختصارات المصفوفات14Hashes
إنشاء الـ Hashesالوصول إلى عناصر الـ Hashتعديل الـ Hashesدوال الـ Hashمراجعة - Hash المنتجالـ Symbols كمفاتيح للـ Hash3المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمةاختصارات العمليات الحسابيةمراجعة - العمليات الرياضية البسيطةمعاملات المقارنة6أساسيات الإدخال والإخراج
الإخراج باستخدام putsالإخراج باستخدام print و pالإخراج باستخدام المتغيراتالإدخال باستخدام getsدالة Chompتحويل أنواع البياناتمراجعة - حاسبة العمرمراجعة - صح أم خطأ