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

do..end مقابل الأقواس { }

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

تمنحك لغة Ruby طريقتين لكتابة block. كلاهما يؤديان نفس المعنى، ولكن لكل منهما حالة استخدام مفضلة.

do...end تُستخدم للكتل البرمجية متعددة الأسطر:

[1, 2, 3].each do |n|
  doubled = n * 2
  puts "#{n} -> #{doubled}"
end

الأقواس المتعرجة { ... } تُستخدم لكتل السطر الواحد، القصيرة، والتي تأتي على شكل تعبير:

[1, 2, 3].each { |n| puts n * 2 }

لكليهما أسبقية مختلفة قليلاً، لكن القاعدة التي يحتاجها المتعلمون هي قاعدة الأسلوب: الأقواس للأسطر المنفردة، do...end للأسطر المتعددة.

يمكن لكلا الشكلين إرجاع قيمة. التعبير الأخير في الكتلة (block) هو ما يتم تمريره مرة أخرى إلى أساليب مثل map:

[1, 2, 3].map { |n| n * 10 }    # [10, 20, 30]
[1, 2, 3].map do |n|
  n * 10
end                              # [10, 20, 30]
challenge icon

التحدي

سهل

اقرأ قائمة من الأعداد الصحيحة المفصولة بفاصلة من الإدخال. اطبع سطرين:

  1. كل رقم مضاعفاً، ومدمجاً بـ , . استخدم صيغة الأقواس (brace) لـ map.
  2. السلسلة النصية "<n> squared is <n*n>" لكل رقم، كل واحد في سطر. استخدم صيغة do...end لـ each.

للإدخال 1,2,3، يكون المخرج:

2, 4, 6
1 squared is 1
2 squared is 4
3 squared is 9

ورقة مرجعية

تحتوي كتل Ruby على صيغتين:

الأقواس المتعرجة { ... } للكتل المكونة من سطر واحد:

[1, 2, 3].map { |n| n * 2 }  # [2, 4, 6]

do...end للكتل متعددة الأسطر:

[1, 2, 3].each do |n|
  doubled = n * 2
  puts "#{n} -> #{doubled}"
end

كلتا الصيغتين تعيدان التعبير الأخير في الكتلة (تستخدمها دوال مثل map).

جرّب بنفسك

numbers = gets.chomp.split(",").map(&:to_i)

# مهمة: السطر 1، مضاعف، صيغة الأقواس لـ map، مدمج بـ ", "
# مهمة: الأسطر 2..n، مربعات، صيغة do...end لـ each
quiz iconاختبر نفسك

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

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