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
Другие вопросы по тегам