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śreturnczy 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?

questionAnswers(3)

yourAnswerToTheQuestion