Return difference between Lambda and Proc in Ruby
More differences between Procs & Lambdas
If a Proc has an explicit return then that return bubbles up to where it is being used.
Let's take a look at a Proc's behavior:
# Explicit return
def work_it
p = Proc.new { puts "Workout"; return }
puts "Pre workout"
p.call
puts "Post workout"
end
=> work_it
Pre workout
Workout
=> nil
# No explicit return
def work_it
p = Proc.new { puts "Workout" }
puts "Pre workout"
p.call
puts "Post workout"
end
=> work_it
Pre workout
Workout
Post workout
=> nil
Now let's look at lambdas:
# Explicit return
def work_it
l = -> { puts "Workout"; return }
puts "Pre workout"
l.call
puts "Post workout"
end
=> work_it
Pre workout
Workout
Post workout
=> nil
Now even with the explicit return in the lambda, the method is able to complete its own logic path.
Tweet