التابع Enumerator::Lazy.enum_for في روبي

من موسوعة حسوب
مراجعة 08:07، 28 ديسمبر 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (إنشاء الصفحة.)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

يشبه التابع enum_for التابع Kernel.to_enum باستثناء أنه يعيد مُعدِّدًا كسولًا (كائن من النوع Enumerator::Lazy). يجعل هذا من السهل تعريف توابع الصنف Enumerable التي ستبقى كسولة بشكل طبيعي إن استدعيت من مُعدِّد كسول (lazy enumerator).

البنية العامة

enum_for(method = :each, *args)  lazy_enum
enum_for(method = :each, *args){|*args| block}  lazy_enum

المعاملات

method

تابع. القيمة الافتراضية هي: each:.

args

الوسائط المُمرَّرة إلى التابع method.

القيمة المعادة

يعاد مُعدِّدٌ كسولٌ (كائن من النوع Enumerator::Lazy).

أمثلة

المثال التالي هو تكملة للمثال الموجود في صفحة التابع Kernel.to_enum:

# repeat لمعرفة تعريف التابع Kernel#to_enum اطلع على صفحة التابع
r = 1..Float::INFINITY
r.repeat(2).first(5) # => [1, 1, 2, 2, 3]
r.repeat(2).class # => Enumerator
r.repeat(2).map{|n| n ** 2}.first(5) # => endless loop!
# :يعمل بشكل طبيعي مع المعدِّدات الكسولة
r.lazy.repeat(2).class # => Enumerator::Lazy
r.lazy.repeat(2).map{|n| n ** 2}.first(5) # => [1, 1, 4, 4, 9]

انظر أيضًا

مصادر