ruby - left - rails where
Ruby accediendo a las variables externas en la funciĆ³n anidada (1)
Hasta donde yo sé, definir una función nombrada dentro de una función no le da acceso a ninguna variable local.
Lo que puede hacer en su lugar es usar un Proc:
def foo(x)
bar = lambda do
puts x
end
bar.call
42
end
foo(5)
Estoy seguro de que hay una respuesta simple para esto; Parece que no puedo encontrarlo. Hice una función anidada en Ruby, y tuve 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: undefined local variable or method
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?