Ruby accédant à des variables externes dans une fonction imbriquée
Question
Je suis sûr qu'il existe une réponse simple à cela. Je n'arrive pas à le trouver. J'ai créé une fonction imbriquée dans Ruby et j'avais des difficultés à accéder aux variables de la fonction externe dans la fonction interne:
def foo(x)
def bar
puts x
end
bar
42
end
foo(5)
Je reçois: NameError: variable ou méthode locale non définie
x 'pour main: Object`
Le code analogue Python fonctionne:
def foo(x):
def bar():
print x
bar()
return 42
foo(5)
Alors, comment puis-je faire la même chose en Ruby?
La solution
Autant que je sache, définir une fonction nommée dans une fonction ne vous donne pas accès à des variables locales.
Ce que vous pouvez faire à la place est d’utiliser un Proc:
def foo(x)
bar = lambda do
puts x
end
bar.call
42
end
foo(5)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow