Ruby は、イテレータがyield
別のイテレータからのすべての値にアクセスできるようにするメカニズムを提供していますか? (または「サブイテレータ」、適切な名前が何であるかわかりません)。からの Python3.3+ の利回りに似ています
def f
yield 'a'
yield 'b'
end
def g
# yield everything from f
yield 'c'
yield 'd'
end
これはおそらく最も慣用的なアプローチです。
def f
yield 'a'
yield 'b'
end
def g(&block)
f(&block)
yield 'c'
yield 'd'
end
1つの方法はこれです:
def f
yield 'a'
yield 'b'
end
def g
f &Proc.new # 'duplicate' the block given to g and pass it to f
yield 'c'
yield 'd'
end