Unterschiede in instance_eval Verhalten zwischen Rubin 1.9.1 und 1.8.6?
Frage
ich die Klassenvariablen @@ my_class var bemerkt werden nun im Rahmen des instance_eval'd Objekt in Ruby 1.9.1 nachgeschlagen, während dies in Ruby 1.8.6 nicht der Fall war.
Was sind einige andere Unterschiede im Verhalten von instance_eval für Ruby 1.9.1?
Lösung
kann ich Liste sie nicht alle, aber ich weiß, dass einige Änderungen in konstantem Nachschlag geben. In 1,8, war konstant Nachschlag in dem Anrufer Umfang, während es in den Blöcken Umfang in 1,9 ist.
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
Andere Tipps
Ich denke, es [zumindest derzeit] nicht selbst zurückkehrt, auch nicht.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow