Différences de comportement instance_eval entre Ruby 1.9.1 et 1.8.6?
Question
J'ai remarqué que les variables de classe @@ my_class var sont maintenant recherchées dans le contexte de l'objet instance_eval'd dans Ruby 1.9.1, alors que ce n'était pas le cas dans Ruby 1.8.6.
Quelles sont les autres différences de comportement d’instance_eval pour Ruby 1.9.1?
La solution
Je ne peux pas tous les énumérer, mais je sais qu'il y a des changements dans la recherche constante. Dans 1.8, la recherche constante était dans la portée des appelants, alors qu'elle se trouvait dans la portée des blocs dans 1.9.
FOO = "hi"
class Something
FOO = "bye"
def self.handle(&block)
instance_eval(&block)
end
end
p Something.handle { FOO }
# "hi" on 1.8, "bye" on 1.9
Autres conseils
Je pense que ça [au moins actuellement] ne revient pas, non plus.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow