Enumerator中的当前对象

时间:2015-03-15 22:55:51

标签: ruby enumeration

Enumerator#peek返回枚举器中的下一个对象。但是如何获得当前对象?

除了使用索引(用于数组)之外,我找不到任何其他解决方案。

1 个答案:

答案 0 :(得分:5)

像这样:

enum = [1,2,3].to_enum
  #=> #<Enumerator: [1, 2, 3]:each> 
enum.next #=> 1 
enum.peek #=> 2
enum.peek #=> 2 # to show enumerator is not incremented 
enum.next #=> 2 
enum.peek #=> 3 
enum.next #=> 3 
enum.peek #=> StopIteration: iteration reached an end

如果您需要知道枚举器的当前值,请在执行enum.next后将其保存到变量curr = enum.next。枚举器通常与块一起使用,在这种情况下,枚举器的当前值被赋给块变量。据我所知,无法从枚举器对象中获取枚举器的当前值。