التابع 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
: يكرر الكتلة المعطاة على كل عنصر من عناصر الكائن الذي استدعي معه مع كائن آخر اعتباطي (الكائن المُمرَّر إليه).