التابع Enumerator.feed في روبي

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

يضبط التابع feed القيمة المراد إعادتها عبر الاستدعاء yield التالي داخل e. إن لم تُعيَّن القيمة، فسيعيد yield القيمة nil.

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

feed obj  nil

المعاملات

obj

قيمة الكائن المراد ضبطها لإعادتها عبر الاستدعاء yield التالي.

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

تعاد القيمة nil بعد تنفيذ العملية.

أمثلة

مثال على استعمال التابع feed:

# ويجمِّع "yield" عناصر المصفوفة إلى Array.map يمرر
# .كمصفوفة "yield" نتائج
# يعيد العناصر المُمرَّرة وتُجمَّع "next" يظهر المثال التالي أنَّ
# كمصفوفة يمكن الحصول عليها "feed" القيم التي مُرِّرت إلى
# .StopIteration.result عبر

e = [1,2,3].map
p e.next           #=> 1
e.feed "a"
p e.next           #=> 2
e.feed "b"
p e.next           #=> 3
e.feed "c"
begin
  e.next
rescue StopIteration
  p $!.result      #=> ["a", "b", "c"]
end

o = Object.new
def o.each
  x = yield         # (2) blocks
  p x               # (5) => "foo"
  x = yield         # (6) blocks
  p x               # (8) => nil
  x = yield         # (9) blocks
  p x               # not reached w/o another e.next
end

e = o.to_enum
e.next              # (1)
e.feed "foo"        # (3)
e.next              # (4)
e.next              # (7)
                    # (10)

انظر أيضًا

  • التابع inspect: ينشئ نسخةً قابلةً للطباعة من e.
  • التابع next: يعيد الكائن التالي في المُعدِّد الذي استدعي معه، ويحرك موضع المؤشر الداخلي للأمام خطوة واحدة.

مصادر