我有一个以下列方式生成枚举器的函数:
def create_example_enumerator(starting_value)
current = starting_value
e = Enumerator.new do |y|
loop do
current += 1
y << current
end
end
end
目前的行为非常简单。
> e = create_example_enumerator(0)
#<Enumerator: details>
> e.next
1
> e.next
2
> e.rewind
#<Enumerator: details>
> e.next
3
我希望e.rewind
将枚举器重置为它的起始值。
在使用无限枚举器时有没有一种很好的方法呢?
答案 0 :(得分:5)
这应该有效:
n = Enumerator.new do |y|
number = 1
loop do
y.yield number
number += 1
end
end
n.next #=> 1
n.next #=> 2
n.next #=> 3
n.rewind
n.next #=> 1