Возможный дубликат:
Использование return в Ruby блокировать
Я новичок в Ruby и был удивлен, что этот фрагмент raise
a LocalJumpError
, когда блок return
:
$bail_if = proc { |condition|
if condition
puts 'the condition is true'
return
else
puts 'the condition is false'
end
}
def method some_condition
$bail_if[some_condition]
end
method true
Если бы я определил bail_if
как локальную переменную в def method
, тогда проблем не было бы. Почему это?
method
возвращалось, еслиsome_condition
истинно, а в противном случае продолжалось выполнение остальной части методаmethod
? Кстати,method
не идеальное имя, потому что уже есть метод, называемый методом - person Andrew Grimm   schedule 02.12.2011proc
ведет себя по-разному в 1.8 и 1.9 - в 1.8 он возвращает лямбда, а в 1.9 возвращает proc. См. пункт 2 здесь. - person Andrew Grimm   schedule 02.12.2011method
возвращалось, еслиsome_condition
верно, но в противном случае продолжалось выполнение остальныхmethod
. - person sivabudh   schedule 02.12.2011