Estou tentando usar Ruby 1.9.1 para uma linguagem de script incorporada, de modo que o código do "usuário final" seja escrito em um bloco Ruby. Um problema com isso é que eu gostaria que os usuários pudessem usar a palavra-chave 'return' nos blocos, para que não precisassem se preocupar com valores de retorno implícitos. Com isso em mente, este é o tipo de coisa que eu gostaria de ser capaz de fazer:
def thing(*args, &block)
value = block.call
puts "value=#{value}"
end
thing {
return 6 * 7
}
Se eu usar 'return' no exemplo acima, obtenho um LocalJumpError. Estou ciente de que isso ocorre porque o bloco em questão é um Proc e não um lambda. O código funcionará se eu remover 'return', mas eu realmente prefiro poder usar 'return' neste cenário. Isso é possível? Tentei converter o bloco em lambda, mas o resultado é o mesmo.