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