Enumeratorクラスがどのように機能するかを理解しようとしています。具体的には、yielderオブジェクトがどのように作成され、コンストラクターが取得するコードブロックに渡されるのかわかりません。
これが私の最初の試みです:
class MyEnumerator
def initialize(&block)
@block = block
end
def next()
@block.call self
end
def yield(*args)
args
end
end
num_gen = MyEnumerator.new do |yielder|
(1..10).each { |num| yielder.yield num }
end
5.times { p num_gen.next }
もちろん、列挙子を進める方法がわからないため、機能していません。誰かが私がそれを実装する方法を理解するのを手伝ってもらえますか?