joshweir
joshweir

Reputation: 5627

Ruby block - return yield running code after yield

I want to return the output of yield but also execute the code after yield, is there a more "right" way?:

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

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

Upvotes: 0

Views: 949

Answers (1)

Stefan
Stefan

Reputation: 114268

You could use tap:

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

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

Upvotes: 4

Related Questions