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