Estoy tratando de usar Ruby 1.9.1 para un lenguaje de scripting incrustado, de modo que el código de "usuario final" se escriba en un bloque Ruby. Un problema con esto es que me gustaría que los usuarios pudieran usar la palabra clave 'return' en los bloques, para que no tengan que preocuparse por los valores de retorno implícitos. Con esto en mente, este es el tipo de cosas que me gustaría poder hacer:
def thing(*args, &block)
value = block.call
puts "value=#{value}"
end
thing {
return 6 * 7
}
Si uso 'return' en el ejemplo anterior, obtengo un LocalJumpError. Soy consciente de que esto se debe a que el bloque en cuestión es un Proc y no un lambda. El código funciona si elimino 'return', pero realmente preferiría poder usar 'return' en este escenario. es posible? Intenté convertir el bloque a lambda, pero el resultado es el mismo.