الكلمة المفتاحية yield
جزء من قسم المنطق وتدفق العمليات في رحلة Ruby على Coddy. الدرس 17 من 56.
يمكن للأساليب (Methods) التي تعرفها بنفسك أن تأخذ كتلة (block)، تماماً مثل الأساليب المدمجة. داخل الأسلوب، تقوم الكلمة المفتاحية yield بتشغيل الكتلة التي مررها المستدعي.
def greet
puts "Before block"
yield
puts "After block"
end
greet do
puts "Hi from the block!"
end
# Before block
# Hi from the block!
# After blockيمكنك تمرير الوسائط (arguments) إلى الكتلة (block) عن طريق إعطائها لـ yield:
def with_each(items)
items.each { |item| yield item }
end
with_each([10, 20, 30]) { |n| puts n }
# 10
# 20
# 30إذا قام تابع (method) باستدعاء yield ولكن المستدعي لم يمرر كتلة (block)، فإن Ruby تثير خطأً. تسمح لك block_given? بالتحقق أولاً:
def maybe
yield if block_given?
end
maybe # لا يحدث شيء
maybe { puts "called!" } # called!التحدي
سهلقم بتعريف طريقة (method) تسمى repeat تأخذ وسيطاً واحداً n (عدد صحيح) وتقوم بتمرير (yield) القيم 1, 2, ..., n إلى الكتلة البرمجية (block) الخاصة بها، واحدة تلو الأخرى.
بعد ذلك، قم باستدعاء الطريقة الخاصة بك مع n = 4 وكتلة برمجية تطبع "Got <value>" لكل قيمة يتم تمريرها.
المخرجات هي:
Got 1
Got 2
Got 3
Got 4جرّب بنفسك
# TODO: قم بتعريف `repeat` التي تمرر `1..n` إلى الـ block الخاص بها
# TODO: قم باستدعاء `repeat(4)` مع block يطبع "Got <value>"
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق العمليات
1السلاسل النصية بعمق
نظرة عامة على أساليب السلاسل النصيةاستيفاء السلاسل النصيةالتكرار عبر السلاسل النصيةالتقسيم والضممراجعة - ناسج السلاسل النصية4Blocks، Procs و Lambdas
ما هي الكتلة؟do..end مقابل الأقواس المعقوفةالكلمة المفتاحية yieldمعاملات الكتلةProcs و Lambdasمراجعة - مكرّر مخصّص7Hashes - الجزء الثاني
Hash.new مع القيم الافتراضيةالتكرار عبر HashesHashes متداخلةالدمج والتحويلمراجعة - عدّاد التكرار10مشروع - سجلات الطلاب
نظرة عامة على المشروعإضافة طالب5قوة Enumerable
Select و Rejectتسلسل MapReduce / Injectcount، all?، any?، none?group_by و partitionsort_by، min_by، max_byمراجعة - خط أنابيب البيانات3المصفوفات ثنائية الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالتكرار عبر المصفوفات ثنائية الأبعادالأنماط الشائعة للمصفوفات ثنائية الأبعادمراجعة - عمليات المصفوفات6المشروع - مدير المكتبة
نظرة عامة على المشروعإضافة كتابتدرّب بنفسك: مترجم Ruby عبر الإنترنت