2009-08-04 7 views
1

私は、クラス変数@@ 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

私はそれらをすべて一覧にすることはできませんが、私は一定の検索でいくつかの変更があることを知っています。 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

これは間違っていると思います。 1.9と1.8でコードを実行してみてください。出力は同じです。 –

+0

2009年に利用可能だったバージョン1.9ではおそらく正確でした:) –

0

私はそれも[現時点では]自己復帰しないと思います。

関連する問題