5

Ruby 是否提供任何机制来允许一个迭代器访问yield另一个迭代器的所有值?(或“subiterator”,我不确定正确的名称是什么)。类似于 Python3.3+ 的yield from

def f
    yield 'a'
    yield 'b'
end

def g
   # yield everything from f
   yield 'c'
   yield 'd'
end
4

2 回答 2

4

这可能是最惯用的方法:

def f
  yield 'a'
  yield 'b'
end

def g(&block)
  f(&block)
  yield 'c'
  yield 'd'
end
于 2013-07-15T18:16:01.750 回答
3

一种方法是:

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
于 2013-07-15T18:12:34.677 回答