Я пытаюсь использовать Ruby 1.9.1 для встроенного языка сценариев, чтобы код «конечного пользователя» был написан в блоке Ruby. Одна из проблем заключается в том, что я бы хотел, чтобы пользователи могли использовать ключевое слово return в блоках, чтобы им не нужно было беспокоиться о неявных возвращаемых значениях. Имея это в виду, я хотел бы иметь возможность делать вот что:
def thing(*args, &block)
value = block.call
puts "value=#{value}"
end
thing {
return 6 * 7
}
Если я использую return в приведенном выше примере, я получаю LocalJumpError. Я знаю, что это потому, что рассматриваемый блок - это Proc, а не лямбда. Код работает, если я удалю «return», но я бы предпочел иметь возможность использовать «return» в этом сценарии. Это возможно? Я пробовал преобразовать блок в лямбду, но результат тот же.