Dlaczego wyraźny zwrot ma znaczenie w 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"
Myślałemreturn
Słowo kluczowe było opcjonalne w Ruby i że zawsze jesteśreturn
czy tego zażądasz czy nie. Biorąc to pod uwagę, uważam to za zaskakującefoo
ibar
mają różne wyjście określone przez to, żefoo
zawiera wyraźnereturn
wProc f
.
Czy ktoś wie, dlaczego tak się dzieje?