質問

Ruby 1.9.1ではinstance_eval'dオブジェクトのコンテキストでクラス変数@@ my_class varが検索されることに気付きましたが、Ruby 1.8.6ではそうではありませんでした。

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

他のヒント

(少なくとも現在)自分自身を返さないと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top