def foo
f = Proc.new { return "return from foo from inside proc" }
f.call # control leaves foo here
return "return from foo"
end
def bar
b = Proc.new { "return from bar from inside proc" }
b.call # control leaves bar here
return "return from bar"
end
puts foo # prints "return from foo from inside proc"
puts bar # prints "return from bar"
Я думал, что ключевое слово return не является обязательным в Ruby и что вы всегда return, запрашиваете ли вы его или нет. Учитывая это, я нахожу удивительным, что foo и bar имеют различный вывод, определяемый тем фактом, что foo содержит явный return в Proc f.
Кто-нибудь знает, почему это так?