Ruby 块 - return yield 运行 yield 后的代码

Ruby block - return yield running code after yield

我想returnyield的输出,还要执行yield之后的代码,有没有更"right"的方式?:

def myblock
  yield_output = yield
  puts 'after yield'
  yield_output
end

myblock {'my yield'}
# after yield
#  => my yield

您可以使用 tap:

def myblock
  yield.tap { puts 'after yield' }
end

myblock { 'my yield' }
# after yield
#=> my yield