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

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

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