【发布时间】:2018-01-10 20:00:38
【问题描述】:
我想返回yield的输出,还要执行yield之后的代码,有没有更“正确”的方式?:
def myblock
yield_output = yield
puts 'after yield'
yield_output
end
myblock {'my yield'}
# after yield
# => my yield
【问题讨论】:
标签: ruby yield ruby-block
我想返回yield的输出,还要执行yield之后的代码,有没有更“正确”的方式?:
def myblock
yield_output = yield
puts 'after yield'
yield_output
end
myblock {'my yield'}
# after yield
# => my yield
【问题讨论】:
标签: ruby yield ruby-block
你可以使用tap:
def myblock
yield.tap { puts 'after yield' }
end
myblock { 'my yield' }
# after yield
#=> my yield
【讨论】:
(yield 5).tap { puts 'after yield' },你可以使用括号。
yield 不是一种方法,但我会将括号括在参数周围,即yield(5).tap { ... },但无论哪种方式都有效。
'my yield'):tap 将接收器传递给块,因此您可以编写 yield.tap { |result| ... }