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