Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

المكرر 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 محصوراً داخل الكتلة، مما يجعل كودك أكثر نظافة وأقل عرضة للسلوك غير المتوقع.

challenge icon

التحدي

سهل

اقرأ سطراً واحداً من المدخلات يحتوي على أعداد صحيحة مفصولة بفاصلة (على سبيل المثال، 4,7,2,9,5).

قم بتقسيم المدخلات إلى مصفوفة من الأعداد الصحيحة، ثم استخدم مكرر each للقيام بما يلي:

  1. طباعة كل رقم مضروباً في 3 في سطر مستقل
  2. حساب مجموع كل الأرقام وطباعته بعد انتهاء الحلقة (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}"
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات