Ruby block - возвращать код выполнения yield после yield
Я хочу вернуть вывод yield
но также выполнить код после yield
Есть ли более "правильный" путь?
def myblock
yield_output = yield
puts 'after yield'
yield_output
end
myblock {'my yield'}
# after yield
# => my yield
1 ответ
Решение
Вы могли бы использовать tap
:
def myblock
yield.tap { puts 'after yield' }
end
myblock { 'my yield' }
# after yield
#=> my yield