[#30408] Ruby 1.8.6 preview2 has been released — "Akinori MUSHA" <knu@...>

 Ruby 1.8.6 preview2 をリリースしました。

20 messages 2007/02/24
[#30414] fail to autoload at $SAFE==4 (Re: Ruby 1.8.6 preview2 has been released) — Hidetoshi NAGAI <nagai@...> 2007/02/25

永井@知能.九工大です.

[#30418] Re: fail to autoload at $SAFE==4 (Re: Ruby 1.8.6 preview2 has been released) — Nobuyoshi Nakada <nobu@...> 2007/02/25

なかだです。

[ruby-dev:30381] Re: class local instance variable

From: Park Ji-In <mithrandir@...>
Date: 2007-02-18 03:21:46 UTC
List: ruby-dev #30381
朴 芝印です。
2007/2/18, Yukihiro Matsumoto <matz@ruby-lang.org>:
> 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で確認しましたが、やっぱちょっと見にくいですね。


In This Thread

Prev Next