Two very similar examples in this article:
def proc_return
Proc.new { return "Proc.new"}.call
return "proc_return method finished"
end
def lambda_return
lambda { return "lambda" }.call
return "lambda_return method finished"
end
puts proc_return
puts lambda_return
# => Proc.new
# => lambda_return method finished
and
def generic_return(code)
code.call
return "generic_return method finished"
end
puts generic_return(Proc.new { return "Proc.new" })
puts generic_return(lambda { return "lambda" })
# => *.rb:6: unexpected return (LocalJumpError)
# => generic_return method finished
Why is this permitted in proc_return
Proc.new { return "Proc.new"}.call
but (something equivalent to) this is not premitted in generic_return
code = Proc.new { return "Proc.new" }
code.call
?