From: Yukihiro Matsumoto Date: 2007-02-18T02:34:19+09:00 Subject: [ruby-dev:30380] Re: class local instance variable まつもと ゆきひろです In message "Re: [ruby-dev:30362] Re: class local instance variable" on Sat, 17 Feb 2007 01:31:28 +0900, "Park Ji-In" writes: |mithrandir@losrorien ~/ruby/ruby-svn/trunk $ cat test2.rb |class Merong | def m | @__y__ = "Yes!" | end |end | |m = Merong.new |m.m |m.instance_eval { @__x__ = "Yes!" } |puts m.instance_variables.inspect | |mithrandir@losrorien ~/ruby/ruby-svn/trunk $ ./miniruby test2.rb |[:@__x__/#>, :@__y__/Merong] | |こうなりました。 instance_evalではクラスローカルの対象となるクラスは、そのオ ブジェクトの特異クラスです。ですから、Merongクラスのクラスロー カル変数はアクセスできません。 でも、ここではMerongクラスのローカルインスタンス変数にアクセ スできるというのが一般的な期待なんでしょうか。クラス変数のと きにもいろいろ考えました[1]が、同じようなことをクラスローカ ル変数に対しても行うべきなんでしょうか。 [1] http://www.rubyist.net/~matz/20070104.html#p03