Je suis en train d'apprendre le rubis et d'essayer de comprendre la portée du code exécuté en blocs. Par exemple, je veux être en mesure de créer un bloc qui affecte la méthode qu'il est attaché à, comme ceci:ruby: un bloc peut-il affecter les variables locales dans une méthode?
def test(&block)
block.call() if block_given?
puts "in test, foo is #{foo}"
puts "in test, bar is #{bar}"
end
test() {
foo="this is foo"
bar="this is bar"
}
Dans ce cas, je ne veux pas avoir à modifier le bloc du tout - Je veux être capable de l'écrire en utilisant des références de variables simples et pas de paramètres. Seulement en modifiant la méthode 'test' dans l'exemple ci-dessus, est-il possible d'accéder aux variables définies dans le bloc?
Encore une fois, le but est de laisser le bloc non modifié, mais être en mesure d'accéder aux variables créées depuis 'test' après l'exécution du bloc.
Ceci est trompeur, vous n'accédez pas aux sections locales dans le bloc comme le dit la question, juste la valeur de retour du bloc. –