我有一个函数,以下列方式生成枚举器:
def create_example_enumerator(starting_value)
current = starting_value
e = Enumerator.new do |y|
loop do
current += 1
y << current
end
end
end
Run Code Online (Sandbox Code Playgroud)
目前的行为非常简单.
> e = create_example_enumerator(0)
#<Enumerator: details>
> e.next
1
> e.next
2
> e.rewind
#<Enumerator: details>
> e.next
3
Run Code Online (Sandbox Code Playgroud)
我想将e.rewind枚举器重置为它的起始值.有没有一种很好的方法可以在使用无限枚举器的同时做到这一点?
这应该工作:
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
Run Code Online (Sandbox Code Playgroud)