التابع Enumerator.each في روبي
< Ruby | Enumerator
يتكرر التابع each عبر الكتلة المعطاة وفقًا للكائن المُعدِّد الذي استدعي معه والطريقة التي أُنشِئ بها. إن لم تُعطَ أية كتلة أو لم يُمرَّر أي شي إلى التابع، فسيعيد الكائن الذي استدعي معه نفسه.
البنية العامة
each { |elm| block } → obj
each → enum
each(*appending_args) { |elm| block } → obj
each(*appending_args) → an_enumerator
المعاملات
appending_args
معاملات يراد إضافتها إلى الكائن المعطى.
القيمة المعادة
يعاد الناتج الذي ستعيده الكتلة block بعد تكرارها على كل قيمة من قيم الكائن المُعدِّد المعطى، أو يعاد الكائن المُعدِّد نفسه إن لم تُعطَ الكتلة block ولم يمرَّر المعامل appending_args، أو يعاد كائن تعداد من النوع Enumerator إن أعطي المعامل appending_args دون الكتلة.
أمثلة
مثال على استعمال التابع each:
"Hello, world!".scan(/\w+/) #=> ["Hello", "world"]
"Hello, world!".to_enum(:scan, /\w+/).to_a #=> ["Hello", "world"]
"Hello, world!".to_enum(:scan).each(/\w+/).to_a #=> ["Hello", "world"]
obj = Object.new
def obj.each_arg(a, b=:b, *rest)
yield a
yield b
yield rest
:method_returned
end
enum = obj.to_enum :each_arg, :a, :x
enum.each.to_a #=> [:a, :x, []]
enum.each.equal?(enum) #=> true
enum.each { |elm| elm } #=> :method_returned
enum.each(:y, :z).to_a #=> [:a, :x, [:y, :z]]
enum.each(:y, :z).equal?(enum) #=> false
enum.each(:y, :z) { |elm| elm } #=> :method_returned
انظر أيضًا
- التابع
each_with_index: يشبه التابعwith_indexباستثناء أنه لا يوجد إزاحة بادئة لبدء العملية عند قيمة محدَّدة. - التابع
each_with_object: يكرر الكتلة المعطاة على كل عنصر من عناصر الكائن الذي استدعي معه مع كائن آخر اعتباطي (الكائن المُمرَّر إليه).