Differenze nel comportamento di instance_eval tra Ruby 1.9.1 e 1.8.6?
Domanda
Ho notato che le variabili di classe @@ my_class var vengono ora cercate nel contesto dell'oggetto instance_eval'd in Ruby 1.9.1, mentre in Ruby 1.8.6 questo non era il caso.
Quali sono alcune altre differenze nel comportamento di instance_eval per Ruby 1.9.1?
Soluzione
Non posso elencarli tutti, ma so che ci sono alcuni cambiamenti nella ricerca costante. In 1.8, la ricerca costante era nell'ambito dei chiamanti, mentre è nell'ambito dei blocchi in 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
Altri suggerimenti
Penso che [almeno al momento] non ritorni da solo.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow