从另一个迭代器中生成所有值

时间:2013-07-15 17:54:30

标签: ruby

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

2 个答案:

答案 0 :(得分:4)

这可能是最惯用的方法:

def f
  yield 'a'
  yield 'b'
end

def g(&block)
  f(&block)
  yield 'c'
  yield 'd'
end

答案 1 :(得分: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