Я пытаюсь использовать 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' в этом сценарии. Это возможно? Я попытался преобразовать блок в лямбда, но результат тот же.