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
.
Кто-нибудь знает, почему это так?