Почему явный возврат имеет значение в 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.

Кто-нибудь знает, почему это так?

Ответы на вопрос(3)

Ваш ответ на вопрос