دوال الـ Hash
جزء من قسم الأساسيات في رحلة Ruby على Coddy — الدرس 76 من 88.
توفر لغة Ruby العديد من الطرق (methods) المدمجة التي تساعدك على فحص الـ hashes والتعامل معها بشكل أكثر فعالية. تمنحك هذه الطرق وصولاً سريعاً إلى معلومات حول محتويات الـ hash الخاص بك.
تُرجع الطريقة keys مصفوفة تحتوي على جميع المفاتيح الموجودة في الـ hash:
person = {"name" => "Alice", "age" => 25, "city" => "Paris"}
puts person.keys # المخرجات: name, age, cityوبالمثل، تُرجع الطريقة values مصفوفة تحتوي على جميع القيم:
person = {"name" => "Alice", "age" => 25, "city" => "Paris"}
puts person.values # المخرجات: Alice, 25, Parisللتحقق مما إذا كان مفتاح معين موجوداً، استخدم key? أو الاسم المستعار له has_key?:
person = {"name" => "Alice", "age" => 25}
puts person.key?("name") # المخرجات: true
puts person.key?("country") # المخرجات: falseتخبرك الطريقة length بعدد أزواج المفتاح والقيمة التي يحتوي عليها الـ hash:
person = {"name" => "Alice", "age" => 25, "city" => "Paris"}
puts person.length # المخرجات: 3أخيرًا، يتحقق empty? مما إذا كان الـ hash يحتوي على أي أزواج على الإطلاق:
data = {}
puts data.empty? # المخرجات: trueالتحدي
سهلاقرأ سطرين من المدخلات:
- هاش (hash) مُمثل كأزواج مفتاح-قيمة مفصولة بفاصلة بتنسيق
key:value(على سبيل المثال،name:Alice,age:25,city:Paris) - مفتاح للتحقق من وجوده (سلسلة نصية)
قم بتحليل المدخل الأول لإنشاء هاش، ثم استخدم طرق الهاش (hash methods) التي تعلمتها لإخراج المعلومات التالية، كل منها في سطر مستقل:
- اطبع كل مفتاح في الهاش (واحد في كل سطر)
- اطبع
---كفاصل - اطبع كل قيمة في الهاش (واحدة في كل سطر)
- اطبع
---كفاصل - اطبع عدد أزواج المفتاح-القيمة في الهاش
- اطبع
---كفاصل - اطبع
trueأوfalseللإشارة إلى ما إذا كان الهاش فارغاً - اطبع
---كفاصل - اطبع
trueأوfalseللإشارة إلى ما إذا كان المفتاح من المدخل الثاني موجوداً في الهاش
على سبيل المثال، إذا كانت المدخلات هي name:Alice,age:25,city:Paris و age، يجب أن يكون المخرج:
name
age
city
---
Alice
25
Paris
---
3
---
false
---
trueإذا كانت المدخلات هي product:Laptop,price:999 و stock، يجب أن يكون المخرج:
product
price
---
Laptop
999
---
2
---
false
---
falseإذا كانت المدخلات هي status:active و status، يجب أن يكون المخرج:
status
---
active
---
1
---
false
---
trueورقة مرجعية
توفر لغة Ruby طرقاً مدمجة لفحص والتعامل مع الـ hashes:
تُرجع الطريقة keys مصفوفة تحتوي على جميع المفاتيح:
person = {"name" => "Alice", "age" => 25, "city" => "Paris"}
puts person.keys # المخرجات: name, age, cityتُرجع الطريقة values مصفوفة تحتوي على جميع القيم:
person = {"name" => "Alice", "age" => 25, "city" => "Paris"}
puts person.values # المخرجات: Alice, 25, Parisتتحقق الطريقة key? (أو اسمها البديل has_key?) مما إذا كان مفتاح معين موجوداً:
person = {"name" => "Alice", "age" => 25}
puts person.key?("name") # المخرجات: true
puts person.key?("country") # المخرجات: falseتُرجع الطريقة length عدد أزواج المفاتيح والقيم:
person = {"name" => "Alice", "age" => 25, "city" => "Paris"}
puts person.length # المخرجات: 3تتحقق الطريقة empty? مما إذا كان الـ hash يحتوي على أي أزواج:
data = {}
puts data.empty? # المخرجات: trueجرّب بنفسك
# قراءة المدخلات
input_string = gets.chomp
key_to_check = gets.chomp
# تحليل سلسلة المدخلات لإنشاء hash
hash = {}
input_string.split(',').each do |pair|
key, value = pair.split(':')
hash[key] = value
end
# TODO: اكتب الكود الخاص بك أدناه
# استخدم دوال الـ hash للقيام بما يلي:
# 1. طباعة كل مفتاح (واحد في كل سطر)
# 2. طباعة "---" كفاصل
# 3. طباعة كل قيمة (واحدة في كل سطر)
# 4. طباعة "---" كفاصل
# 5. طباعة عدد أزواج المفاتيح والقيم
# 6. طباعة "---" كفاصل
# 7. طباعة true/false إذا كان الـ hash فارغاً
# 8. طباعة "---" كفاصل
# 9. طباعة true/false إذا كان key_to_check موجوداً في الـ hashيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالثالمعاملات المنطقية - الجزء الرابع7حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على مدخلات المستخدم2المتغيرات وأنواع البيانات
الأرقام والمتغيراتنوع البيانات Stringنوع البيانات Booleanنوع البيانات Symbolالتحقق من أنواع البياناتقواعد التسميةملخص - إنشاء المتغيرات8الحلقات التكرارية
حلقة For مع النطاقاتحلقة WhileBreakNextمراجعة - المضروب (Factorial)حلقة Timesحلقة Untilالحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)3المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمةاختصارات العمليات الحسابيةمراجعة - العمليات الرياضية البسيطةمعاملات المقارنة6أساسيات الإدخال والإخراج
الإخراج باستخدام putsالإخراج باستخدام print و pالإخراج باستخدام المتغيراتالإدخال باستخدام getsدالة Chompتحويل أنواع البياناتمراجعة - حاسبة العمرمراجعة - صح أم خطأ