私は、クラス変数@@ my_class varが、Ruby 1.9.1のinstance_evalされたオブジェクトのコンテキストで参照されていることに気付きましたが、これはRuby 1.8.6では当てはまりませんでした。Ruby 1.9.1と1.8.6の間のinstance_evalの動作の違いは?
Ruby 1.9.1のinstance_evalの動作には、いくつかの違いがありますか?
私は、クラス変数@@ my_class varが、Ruby 1.9.1のinstance_evalされたオブジェクトのコンテキストで参照されていることに気付きましたが、これはRuby 1.8.6では当てはまりませんでした。Ruby 1.9.1と1.8.6の間のinstance_evalの動作の違いは?
Ruby 1.9.1のinstance_evalの動作には、いくつかの違いがありますか?
私はそれらをすべて一覧にすることはできませんが、私は一定の検索でいくつかの変更があることを知っています。 1.8では、呼び出し側のスコープ内で定数参照が行われていましたが、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
私はそれも[現時点では]自己復帰しないと思います。
これは間違っていると思います。 1.9と1.8でコードを実行してみてください。出力は同じです。 –
2009年に利用可能だったバージョン1.9ではおそらく正確でした:) –