En essayant de rafraîchir mes compétences Ruby je continue à courir à travers ce cas dont je ne peux pas trouver une explication en lisant simplement les documents de l'API. Une explication serait grandement appréciée. Voici l'exemple de code:Comment les variables sont-elles liées au corps d'un define_method?
for name in [ :new, :create, :destroy ]
define_method("test_#{name}") do
puts name
end
end
Ce que je veux/vous attendre à arriver est que la variable name
sera lié au bloc donné à define_method
et que lorsque #test_new
est appelée sortie sera « nouvelle ». A la place, chaque méthode définie sort "destroy" - la dernière valeur affectée à la variable name. Qu'est-ce que j'ai mal compris à propos de define_method
et de ses blocs? Merci!
Maintenant, je pense que je devrais attendre que define_method fonctionne comme le mot-clé def, auquel cas le bloc donné à define_method ne peut fonctionner qu'avec des variables locales ou passées comme arguments. – Chris