當調用不帶參數或塊(index
,keep_if
,each
,drop_while
等等)時,Ruby array中的許多方法返回枚舉數。使用返回Ruby數組中枚舉數的方法的正確方法是什麼?
- 什麼時候適合使用這種形式的方法,而不是用塊調用它們?
當調用不帶參數或塊(index
,keep_if
,each
,drop_while
等等)時,Ruby array中的許多方法返回枚舉數。使用返回Ruby數組中枚舉數的方法的正確方法是什麼?
從文檔到Enumerator
:
大多數方法有兩種形式:一塊形式,其中內容是 在枚舉的每個項目進行評價,並且其 返回一個非塊形式新的Enumerator包裝迭代。
這使您可以將枚舉器鏈接在一起。例如,可以 列表的元素映射到經由包含索引和元件 作爲字符串的字符串:
puts %w[foo bar baz].map.with_index {|w,i| "#{i}:#{w}" } # => ["0:foo", "1:bar", "2:baz"]
枚舉器也可以被用作外部迭代器。例如, Enumerator#next返回迭代器的下一個值,或者如果枚舉器處於末尾,則引發StopIteration 。
e = [1,2,3].each # returns an enumerator object. puts e.next # => 1 puts e.next # => 2 puts e.next # => 3 puts e.next # raises StopIteration
我是複製粘貼抱歉,但我無法解釋更好。
主要原原因枚舉類存在的方法鏈接:
array.each.with_object [[], []] { |element, memo| ... }
因此,基本上,你不需要擔心。