2012-08-12 54 views

回答

5

從文檔到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 

我是複製粘貼抱歉,但我無法解釋更好。

3

主要原原因枚舉類存在的方法鏈接:

array.each.with_object [[], []] { |element, memo| ... } 

因此,基本上,你不需要擔心。

相關問題