yield function is one of the good stuff in the Ruby that gives different kind of code reuse logic to your code. It just like lambda in Scheme and Lips. when yield is called in a function it cuts the execution of its container function and pass the execution time to the do-end block then when the execution ends with the end keyword, it continues the execution from the last point.
Here is an example code that uses yield function.
def around_staff eren = 20 puts "first step" yield(eren) puts "last step" end def do_something around_staff do |eren| puts "I did something around"+ eren.to_s end end do_something