Each مع الفهرس
جزء من قسم الأساسيات في رحلة Ruby على Coddy — الدرس 66 من 88.
أحيانًا تحتاج إلى معرفة ليس فقط العنصر الذي تعمل معه، ولكن أيضًا موقعه في المصفوفة. توفر لك طريقة each_with_index في Ruby كلاً من العنصر وفهرسه في دورة واحدة.
إليك كيف يعمل ذلك:
fruits = ["apple", "banana", "cherry"]
fruits.each_with_index do |fruit, index|
puts "#{index}: #{fruit}"
endهذا ينتج:
0: apple
1: banana
2: cherryلاحظ أن الكتلة البرمجية (block) تأخذ الآن متغيرين بين الخطين الرأسيين (pipes): يأتي العنصر أولاً، يليه الفهرس (index). يبدأ الفهرس من 0، تماماً كما هو الحال عند الوصول إلى عناصر المصفوفة مباشرة.
هذا مفيد بشكل خاص عندما تحتاج إلى عرض قوائم مرقمة أو تتبع المواقع:
tasks = ["Buy groceries", "Clean room", "Call mom"]
tasks.each_with_index do |task, i|
puts "Task #{i + 1}: #{task}"
endمن خلال إضافة 1 إلى الفهرس، نقوم بإنشاء قائمة مرقمة سهلة القراءة تبدأ من 1 بدلاً من 0. توفر الطريقة each_with_index الحاجة إلى تتبع متغير عداد يدويًا، مما يجعل الكود الخاص بك أكثر نظافة وأقل عرضة للأخطاء.
التحدي
سهلاقرأ سطراً واحداً من المدخلات يحتوي على كلمات مفصولة بفاصلة (على سبيل المثال، apple,banana,cherry,date).
قم بتقسيم المدخلات إلى مصفوفة من السلاسل النصية، ثم استخدم each_with_index لطباعة كل عنصر كقائمة مرقمة تبدأ من 1 (وليس 0).
يجب أن يتبع كل سطر هذا التنسيق: Item 1: apple
على سبيل المثال، إذا كانت المدخلات apple,banana,cherry,date، يجب أن تكون المخرجات:
Item 1: apple
Item 2: banana
Item 3: cherry
Item 4: dateإذا كانت المدخلات red,green,blue، يجب أن تكون المخرجات:
Item 1: red
Item 2: green
Item 3: blueإذا كانت المدخلات monday,tuesday,wednesday,thursday,friday، يجب أن تكون المخرجات:
Item 1: monday
Item 2: tuesday
Item 3: wednesday
Item 4: thursday
Item 5: fridayإذا كانت المدخلات solo، يجب أن تكون المخرجات:
Item 1: soloورقة مرجعية
تسمح لك الطريقة each_with_index بالتكرار عبر مصفوفة مع الوصول إلى كل من العنصر وفهرسه:
fruits = ["apple", "banana", "cherry"]
fruits.each_with_index do |fruit, index|
puts "#{index}: #{fruit}"
endالمخرجات:
0: apple
1: banana
2: cherryتأخذ الكتلة (block) متغيرين: العنصر أولاً، ثم الفهرس. يبدأ الفهرس من 0.
لإنشاء قوائم مرقمة سهلة القراءة تبدأ من 1، أضف 1 إلى الفهرس:
tasks = ["Buy groceries", "Clean room", "Call mom"]
tasks.each_with_index do |task, i|
puts "Task #{i + 1}: #{task}"
endجرّب بنفسك
# قراءة المدخلات المفصولة بفواصل
input = gets.chomp
# تقسيم المدخلات إلى مصفوفة
items = input.split(",")
# TODO: استخدم each_with_index لطباعة كل عنصر كقائمة مرقمة
# تذكر: يبدأ الفهرس من 0، ولكنك تحتاج إلى العرض بدءاً من 1
# التنسيق: "Item 1: apple"يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالثالمعاملات المنطقية - الجزء الرابع7حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على مدخلات المستخدم2المتغيرات وأنواع البيانات
الأرقام والمتغيراتنوع البيانات Stringنوع البيانات Booleanنوع البيانات Symbolالتحقق من أنواع البياناتقواعد التسميةملخص - إنشاء المتغيرات8الحلقات التكرارية
حلقة For مع النطاقاتحلقة WhileBreakNextمراجعة - المضروب (Factorial)حلقة Timesحلقة Untilالحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)3المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمةاختصارات العمليات الحسابيةمراجعة - العمليات الرياضية البسيطةمعاملات المقارنة6أساسيات الإدخال والإخراج
الإخراج باستخدام putsالإخراج باستخدام print و pالإخراج باستخدام المتغيراتالإدخال باستخدام getsدالة Chompتحويل أنواع البياناتمراجعة - حاسبة العمرمراجعة - صح أم خطأ