المكرر Each
جزء من قسم الأساسيات في رحلة Ruby على Coddy — الدرس 65 من 88.
توفر Ruby طريقة أكثر أناقة للتكرار عبر المصفوفات بدلاً من استخدام حلقات for أو while. يُعد المكرر each هو الطريقة المفضلة في Ruby لمعالجة كل عنصر في المجموعة.
إليك الصيغة الأساسية:
fruits = ["apple", "banana", "cherry"]
fruits.each do |fruit|
puts fruit
endيقوم هذا بإخراج كل فاكهة في سطر منفصل. يُسمى المتغير الموجود بين الخطين الرأسيين (|fruit|) بمتغير الكتلة (block variable). وهو يحمل كل عنصر بشكل مؤقت بينما ينتقل المكرر (iterator) عبر المصفوفة.
بالنسبة للكتل البرمجية المكونة من سطر واحد، يمكنك استخدام الأقواس المتعرجة بدلاً من do...end:
numbers = [1, 2, 3]
numbers.each { |n| puts n * 2 }تُعد طريقة each قوية لأنه يمكنك إجراء أي عملية على كل عنصر. إليك مثالاً يحسب المجموع التراكمي:
prices = [10, 25, 15]
total = 0
prices.each do |price|
total += price
end
puts total # المخرجات: 50على عكس حلقات for، يبقى متغير الكتلة في each محصوراً داخل الكتلة، مما يجعل كودك أكثر نظافة وأقل عرضة للسلوك غير المتوقع.
التحدي
سهلاقرأ سطراً واحداً من المدخلات يحتوي على أعداد صحيحة مفصولة بفاصلة (على سبيل المثال، 4,7,2,9,5).
قم بتقسيم المدخلات إلى مصفوفة من الأعداد الصحيحة، ثم استخدم مكرر each للقيام بما يلي:
- طباعة كل رقم مضروباً في 3 في سطر مستقل
- حساب مجموع كل الأرقام وطباعته بعد انتهاء الحلقة (loop)
استخدم متغيراً تم تهيئته بـ 0 قبل الحلقة لتجميع المجموع أثناء تكرارك عبر المصفوفة.
على سبيل المثال، إذا كانت المدخلات 4,7,2,9,5، يجب أن تكون المخرجات:
12
21
6
27
15
Sum: 27إذا كانت المدخلات 10,20,30، يجب أن تكون المخرجات:
30
60
90
Sum: 60إذا كانت المدخلات 1,2,3,4، يجب أن تكون المخرجات:
3
6
9
12
Sum: 10إذا كانت المدخلات 5، يجب أن تكون المخرجات:
15
Sum: 5ورقة مرجعية
يُعد المكرر each الطريقة المفضلة في Ruby للتكرار عبر المصفوفات:
fruits = ["apple", "banana", "cherry"]
fruits.each do |fruit|
puts fruit
endالمتغير الموجود بين الخطين الرأسيين (|fruit|) هو متغير كتلة يحمل كل عنصر بشكل مؤقت.
بالنسبة للكتل المكونة من سطر واحد، استخدم الأقواس المتعرجة:
numbers = [1, 2, 3]
numbers.each { |n| puts n * 2 }يمكنك إجراء عمليات على كل عنصر، مثل حساب المجموع التراكمي:
prices = [10, 25, 15]
total = 0
prices.each do |price|
total += price
end
puts total # المخرجات: 50جرّب بنفسك
# قراءة الأعداد الصحيحة المفصولة بفاصلة
input = gets.chomp
# تقسيم المدخلات إلى مصفوفة من الأعداد الصحيحة
numbers = input.split(",").map(&:to_i)
# تهيئة متغير المجموع
sum = 0
# TODO: اكتب الكود الخاص بك أدناه
# استخدم مكرر each للقيام بما يلي:
# 1. طباعة كل رقم مضروباً في 3
# 2. إضافة كل رقم إلى متغير المجموع
# طباعة المجموع النهائي
puts "Sum: #{sum}"يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالثالمعاملات المنطقية - الجزء الرابع7حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على مدخلات المستخدم2المتغيرات وأنواع البيانات
الأرقام والمتغيراتنوع البيانات Stringنوع البيانات Booleanنوع البيانات Symbolالتحقق من أنواع البياناتقواعد التسميةملخص - إنشاء المتغيرات8الحلقات التكرارية
حلقة For مع النطاقاتحلقة WhileBreakNextمراجعة - المضروب (Factorial)حلقة Timesحلقة Untilالحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)3المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمةاختصارات العمليات الحسابيةمراجعة - العمليات الرياضية البسيطةمعاملات المقارنة6أساسيات الإدخال والإخراج
الإخراج باستخدام putsالإخراج باستخدام print و pالإخراج باستخدام المتغيراتالإدخال باستخدام getsدالة Chompتحويل أنواع البياناتمراجعة - حاسبة العمرمراجعة - صح أم خطأ