[#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:30372] Re: class local instance variable

From: Yukihiro Matsumoto <matz@...>
Date: 2007-02-17 10:26:15 UTC
List: ruby-dev #30372
まつもと ゆきひろです

In message "Re: [ruby-dev:30368] Re: class local instance variable"
    on Sat, 17 Feb 2007 15:08:57 +0900, "Makoto Inada" <mak@robustatech.com> writes:

|はじめまして。いなだと申します。

その節はどうも。

|insntance_eval
|の方は調べてないんですが、特異クラスで定義されたメソッドから、クラスローカルインスタンス変数が見えません。サンプルコードを添付しておきました。1.9.02007-02-16
|で動作確認しています。

これは私の意図通りの動作です。

|オブジェクト独自のメソッドである特異メソッドは、オブジェクトのインスタンス変数のすべてにアクセスできるべきであるというのが正しいなら、クラスローカルインスタンス変数へもアクセスできるべきです。
|一方で、「クラスローカル」を字義どおりに解釈するなら、特異メソッドはオブジェクトの一部とはみなせてもクラスの一部とは見なせないので、クラスローカルインスタンス変数にアクセスできないというのも理屈です。
|この二つは両立しないんですが、どちらの解釈が正しいんでしょうか?個人的には前者の方が直感的で好みです。

クラスローカルインスタンス変数は、そのメソッドが属しているク
ラスの範囲内でしかアクセスできないインスタンス変数です。オブ
ジェクトの特異メソッドが属しているのは、そのオブジェクトに固
有の特異クラス(singleton class or eigenclass)ですから、その
範囲内で有効です。

その特異クラスが所属しているオブジェクトが、たまたまクラスで
あった場合には、そちらをクラスローカルの対象とするという(稲
田さんのおっしゃる「前者」の)考え方もわからないでもないです
が、ちょっとルールが複雑で一貫性のないものになるような気がし
ます。どうでしょう?

ま、クラス変数アクセスで「前者」と似たようなことをしているの
で、絶対にだめだとは言いませんが。

                                まつもと ゆきひろ /:|)

In This Thread

Prev Next