From: Park Ji-In Date: 2007-02-18T12:21:46+09:00 Subject: [ruby-dev:30381] Re: class local instance variable 朴 芝印です。 2007/2/18, Yukihiro Matsumoto : > instance_evalではクラスローカルの対象となるクラスは、そのオ > ブジェクトの特異クラスです。ですから、Merongクラスのクラスロー > カル変数はアクセスできません。 > > でも、ここではMerongクラスのローカルインスタンス変数にアクセ > スできるというのが一般的な期待なんでしょうか。クラス変数のと > きにもいろいろ考えました[1]が、同じようなことをクラスローカ > ル変数に対しても行うべきなんでしょうか。 > > [1] http://www.rubyist.net/~matz/20070104.html#p03 > たしかに元のクラスとinstance_evalではわけが違うんですね。でも instance_evalとか、特異クラスだとそのオブジェクトのscopeで何かをする、と 言う感じはあるんですね。ユーザの一人としてはアクセスできると嬉しいと思い ます。 で、もともと問題だったSingletonの方ですが、こんなのはどうでしょう。 klass.instance_eval { @__instance__ = nil @__mutex__ = Mutex.new } の変わりに def klass.__init__ @__instance__ = nil @__mutex__ = Mutex.new end klass.__init__ make test-allで確認しましたが、やっぱちょっと見にくいですね。