Ruby accede a variables externas en función anidada
Pregunta
Estoy seguro de que hay una respuesta simple para esto; Parece que no puedo encontrarlo. Hice una función anidada en Ruby y tenía problemas para acceder a las variables desde la función externa dentro de la función interna:
def foo(x)
def bar
puts x
end
bar
42
end
foo(5)
Obtengo: NameError: variable o método local indefinido
x 'para main: Object`
El código análogo de Python funciona:
def foo(x):
def bar():
print x
bar()
return 42
foo(5)
Entonces, ¿cómo hago lo mismo en Ruby?
Solución
Hasta donde yo sé, definir una función con nombre dentro de una función no le da acceso a ninguna variable local.
Lo que puedes hacer es usar un Proc:
def foo(x)
bar = lambda do
puts x
end
bar.call
42
end
foo(5)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow