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

معاملات الـ Block

جزء من قسم المنطق وتدفق العمليات في رحلة Ruby على Coddy — الدرس 18 من 56.

المتغيرات الموجودة بين الخطين الرأسيين، |x|، |x, y|، هي معاملات الكتلة (block parameters). وهي تُسمي القيم التي تمررها الطريقة (method) إلى الكتلة.

تمرر بعض الطرق قيمة واحدة، بينما تمرر طرق أخرى عدة قيم. تمرر each عنصراً واحداً في كل مرة:

[10, 20, 30].each { |n| puts n }

each_with_index يمرر قيمتين، العنصر وفهرسه:

["a", "b", "c"].each_with_index do |letter, i|
  puts "#{i}: #{letter}"
end
# 0: a
# 1: b
# 2: c

عند التكرار عبر hash، تكون معاملات الـ block هي المفتاح (key) والقيمة (value):

{ a: 1, b: 2 }.each do |key, value|
  puts "#{key} = #{value}"
end

يعتمد عدد وترتيب معاملات الكتلة (block parameters) على ما تنتجه الطريقة (method). عند الشك، راجع التوثيق أو جرب معاملًا واحدًا لترى النتيجة.

challenge icon

التحدي

سهل

الـ hash المسمى scores معطى. قم بتكراره باستخدام each_with_index على صيغة to_a الخاصة به بحيث يمكنك الوصول إلى كل من زوج (name, points) وموقعه. اطبع سطراً واحداً لكل إدخال بهذا التنسيق:

<rank>. <name> - <points>

حيث يبدأ rank من 1 (وليس 0).

بالنسبة للـ hash الافتراضي، يكون المخرج هو:

1. Alice - 90
2. Bob - 85
3. Cara - 78

ورقة مرجعية

تتم تسمية بارامترات الكتلة (Block parameters) بين خطين عموديين |...| وتستقبل القيم التي تنتجها الطريقة (method):

# each – بارامتر واحد
[10, 20, 30].each { |n| puts n }

# each_with_index – العنصر والفهرس
["a", "b", "c"].each_with_index do |letter, i|
  puts "#{i}: #{letter}"
end

# hash each – المفتاح والقيمة
{ a: 1, b: 2 }.each do |key, value|
  puts "#{key} = #{value}"
end

تقوم hash.to_a بتحويل الـ hash إلى مصفوفة من أزواج [key, value]، وهي مفيدة مع each_with_index:

{ a: 1, b: 2 }.to_a.each_with_index do |(key, value), i|
  puts "#{i}: #{key} = #{value}"
end

جرّب بنفسك

scores = { "Alice" => 90, "Bob" => 85, "Cara" => 78 }

# TODO: اطبع "<rank>. <name> - <points>" لكل إدخال، يبدأ الترتيب (rank) من 1
quiz iconاختبر نفسك

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

جميع دروس المنطق وتدفق العمليات