الـ Symbols كمفاتيح للـ Hash
جزء من قسم الأساسيات في رحلة Ruby على Coddy. الدرس 78 من 88.
حتى الآن، كنت تستخدم السلاسل النصية كمفاتيح للتجزئة باستخدام صياغة سهم التجزئة. لكن مطوري Ruby يستخدمون عادةً الرموز كمفاتيح بدلًا منها، مما يوفر أسلوبًا أوضح وأكثر كفاءة.
هل تتذكر الرموز التي تعلمتها سابقًا؟ إنها معرّفات خفيفة الوزن وثابتة تبدأ بنقطتين رأسيتين. عند استخدام الرموز كمفاتيح، توفر Ruby صياغة مختصرة خاصة:
person = {name: "Alice", age: 25, city: "Paris"}
puts person # الناتج: {:name=>"Alice", :age=>25, :city=>"Paris"}لاحظ كيف يحل name: محل :name =>. لا تعمل هذه الصيغة المختصرة إلا عندما يكون المفتاح رمزًا. للوصول إلى القيم، استخدم الرمز مع الأقواس المربعة:
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"}يُفضَّل استخدام الرموز كمفاتيح للتجزئة لأنها أسرع في المقارنة من السلاسل النصية وتستهلك ذاكرة أقل. سترى هذا النمط في شيفرة Ruby باستمرار، لذا يجدر بك أن تعتاد عليه.
التحدي
سهلاقرأ ثلاثة أسطر من الإدخال:
- ماركة السيارة (سلسلة نصية)
- اسم الطراز (سلسلة نصية)
- سنة (عدد صحيح)
أنشئ تجزئة باسم car باستخدام صيغة الاختصار للرموز (مثلًا: key: value) مع أزواج المفاتيح والقيم التالية:
- اربط
:brandبماركة السيارة - اربط
:modelباسم الطراز - اربط
:yearبالسنة (كعدد صحيح)
ثم نفّذ العمليات التالية:
- اطبع قيمة المفتاح
:model - أضف مفتاحًا جديدًا
:colorبقيمة"black" - حدّث المفتاح
:yearبإضافة 1 إلى قيمته الحالية - اطبع التجزئة النهائية
على سبيل المثال، إذا كانت المدخلات هي 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"}جرّب بنفسك
# اقرأ المدخلات
brand = gets.chomp
model = gets.chomp
year = gets.chomp.to_i
# TODO: اكتب الكود أدناه
# 1. أنشئ جدول تجزئة باسم 'car' باستخدام الصياغة المختصرة للرموز مع المفاتيح :brand و:model و:year
# 2. اطبع قيمة المفتاح :model
# 3. أضف مفتاحًا جديدًا :color بالقيمة "black"
# 4. حدّث المفتاح :year بإضافة 1 إلى قيمته الحالية
# 5. اطبع جدول التجزئة النهائييتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
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تحويل أنواع البياناتمراجعة - حاسبة العمرمراجعة - صح أم خطأتدرّب بنفسك: مترجم Ruby عبر الإنترنت