Estoy tratando de usar Ruby 1.9.1 para un lenguaje de scripting incrustado, para que el código de "usuario final" se escriba en un bloque de Ruby. Un problema con esto es que me gustaría que los usuarios puedan 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 ser capaz de hacer:Usando 'return' en un bloque de Ruby
def thing(*args, &block)
value = block.call
puts "value=#{value}"
end
thing {
return 6 * 7
}
Si uso 'retorno' en el ejemplo anterior, aparece 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 en una lambda, pero el resultado es el mismo.
¿por qué quiere evitar un valor de retorno implícito? – marcgg
@marcgg - Tengo una pregunta relacionada aquí - https://stackoverflow.com/questions/25953519/simple-way-to-understand-returning-from-a-block-in-ruby. –