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

ما هو الـ Block؟

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

لقد كنت تكتب الكتل بالفعل. في كل مرة كتبت فيها each do |x| ... end، كان الجزء الموجود بين do و end عبارة عن كتلة (block): وهي قطعة من الكود يتم تمريرها إلى طريقة (method).

[1, 2, 3].each do |n|
  puts n * 2
end

هنا، each هي method في المصفوفة، و do |n| ... end هو الـ block. تقوم each بتشغيل الـ block مرة واحدة لكل عنصر، وتمرره كـ n.

الكتل البرمجية (Blocks) ليست كائنات منفصلة تخزنها في متغيرات، بل هي مرتبطة مباشرة باستدعاء الطريقة (method call). فالطريقة إما أن تستقبل كتلة برمجية أو لا، ومعظم طرق التكرار (each، map، select، times) مصممة لاستقبال واحدة.

3.times do |i|
  puts "hi #{i}"
end

استدعاء دالة (method) بدون الكتلة البرمجية (block) الخاصة بها يغير ما تفعله. فاستدعاء [1,2,3].map بدون كتلة برمجية يعيد مُعدِّدًا (enumerator) بدلاً من مصفوفة محولة، لذا فإن الكتلة البرمجية هي جزء من ما تعنيه الدالة.

challenge icon

التحدي

مبتدئ

اقرأ عددًا صحيحًا n من المدخلات. استخدم الطريقة times مع كتلة (block) لطباعة الرسالة Iteration <i> لكل قيمة من i من 0 حتى n - 1.

بالنسبة للمدخل 3، يكون المخرج:

Iteration 0
Iteration 1
Iteration 2

ورقة مرجعية

الـ block هو عبارة عن كتلة من الكود يتم تمريرها إلى دالة (method) بين do |param| ... end:

[1, 2, 3].each do |n|
  puts n * 2
end

استخدم times لتكرار كتلة برمجية n من المرات، مع انتقال i من 0 إلى n - 1:

3.times do |i|
  puts "hi #{i}"
end

جرّب بنفسك

n = gets.to_i

# TODO: استخدم n.times مع block لطباعة كل تكرار
quiz iconاختبر نفسك

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

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