Tengo un código que necesito usar dentro de eval
. A veces necesito salir del código de evaluación, pero mis intentos conducen a errores.ruby - ¿Cómo regresar desde el interior de eval?
ej .:
# expected to see 1, 2 and 5; not 3 nor 4; and no errors
eval "puts 1; puts 2; return; puts 3; puts 4" # => Error: unexpected return
puts 5
he intentado con return
, end
, exit
, break
, y no pude conseguir el éxito. exit
no plantea errores, pero entonces no reciben la
(Nota:. Sé que eval
es malo, pero en este caso tengo que usarlo)
Descubrí algo raro. 'break' salta de un bloque' yield'ed. Entonces, puedo hacer: 'def do_yield; rendimiento; fin; do_yield {eval "puts 1; puts 2; break; puts 3"}; pone 5' y obtengo el resultado esperado. ¡No sé por qué funciona eso! –