Usando 'return' em um bloco Ruby
Estou tentando usar o Ruby 1.9.1 para uma linguagem de script incorporada, para que o código do "usuário final" seja gravado em um bloco Ruby. Um problema é 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 poder fazer:
def thing(*args, &block)
value = block.call
puts "value=#{value}"
end
thing {
return 6 * 7
}
Se eu usar 'return' no exemplo acima, recebo um LocalJumpError. Estou ciente de que isso ocorre porque o bloco em questão é um Proc e não um lambda. O código funciona se eu remover 'return', mas eu realmente preferiria poder usar 'return' nesse cenário. Isso é possível? Eu tentei converter o bloco em um lambda, mas o resultado é o mesmo.