我很惊讶 Enumerator#each 没有从序列中的当前位置开始。
o = Object.new
def o.each
yield 1
yield 2
yield 3
end
e = o.to_enum
puts e.next
puts e.next
e.each{|x| puts x}
# I expect to see 1,2,3 but I see 1,2,1,2,3
# apparently Enumerator's each (inherited from Enumerable) restarts the sequence!
我做错了吗?有没有办法构造另一个 Enumerator(来自 e),它将具有预期的每个行为?