横断しようとしている木があります。それをたどると、各列挙子がツリーの子を列挙するために使用される列挙子のスタックを保持します。
この列挙子のスタックを複製して別のオブジェクトに渡して、スタックの状態によって示される場所からツリーをトラバースできるようにしたいと考えています。
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