我有一棵树,我正在尝试遍历。当我遍历它时,我保留了一堆枚举器,其中每个枚举器用于枚举树的孩子。
我希望能够复制这个枚举器堆栈并将其交给另一个对象,以便它可以从堆栈状态指示的位置开始遍历树。
当我尝试在 Enumerator 上调用 #dup 时,出现错误。是否可以复制枚举器?如果没有,我怎么能完成同样的事情?(我曾考虑将一堆整数作为索引,但我担心效率。
这是一些代码来显示我所看到的......
一旦第一个枚举器启动,就不能复制它。这就是我的情况。
a = [1,2,3].each
=> #<Enumerator: [1, 2, 3]:each>
a.next
=> 1
b = a.dup
TypeError: can't copy execution context
from (irb):3:in `initialize_copy'
from (irb):3:in `initialize_dup'
from (irb):3:in `dup'
from (irb):3