الفرق بين المراجعتين ل"Ruby/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: يعيد الكائن التالي في المُعدِّد الذي استدعي معه، ويحرك موضع المؤشر الداخلي للأمام خطوة واحدة.

مصادر