[#11357] [PATCH] an analogue of `long long' — "Nobuyoshi.Nakada" <nobu.nakada@...>

なかだです。

18 messages 2000/11/01
[#11358] Re: [PATCH] an analogue of `long long' — matz@... (Yukihiro Matsumoto) 2000/11/01

まつもと ゆきひろです

[#11364] Re: [PATCH] an analogue of `long long' — EGUCHI Osamu <eguchi@...> 2000/11/02

えぐち@エスアンドイー です。

[#11440] class Character (was: Ruby I18N) — Yasushi Shoji <yashi@...>

[ruby-dev:11428] からの続きですが、threadは切りました。

14 messages 2000/11/08
[#11442] Re: class Character (was: Ruby I18N) — TAKAHASHI Masayoshi <maki@...> 2000/11/08

高橋征義です。用語について。

[#11443] Re: class Character (was: Ruby I18N) — Yasushi Shoji <yashi@...> 2000/11/08

At Wed, 8 Nov 2000 20:44:55 +0900,

[#11520] A problem of Socket methods on Windows — OKA Toshiyuki <oka@...>

岡と申します。

22 messages 2000/11/15
[#11523] Re: A problem of Socket methods on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/15

なかだです。

[#11528] Re: A problem of Socket methods on Windows — matz@... (Yukihiro Matsumoto) 2000/11/15

まつもと ゆきひろです

[#11532] Re: A problem of Socket methods on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/15

なかだです。

[#11534] Re: A problem of Socket methods on Windows — OKA Toshiyuki <oka@...> 2000/11/15

岡です。

[#11535] Re: A problem of Socket methods on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/15

なかだです。

[#11538] Re: A problem of Socket methods on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/15

なかだです。

[#11662] IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org>

In article <E140cR3-0002ls-00@ev.netlab.zetabits.co.jp>,

22 messages 2000/11/28
[#11663] Re: IO (Re: fork problem?) — matz@... (Yukihiro Matsumoto) 2000/11/28

まつもと ゆきひろです

[#11664] Re: IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org> 2000/11/28

In article <E140fxW-0002u9-00@ev.netlab.zetabits.co.jp>,

[#11665] Re: IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org> 2000/11/28

In article <hvor93w5wb8.fsf@coulee.m17n.org>,

[#11669] Re: IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org> 2000/11/29

In article <hvoofz05uwz.fsf@coulee.m17n.org>,

[#11672] Re: IO (Re: fork problem?) — matz@... (Yukihiro Matsumoto) 2000/11/29

まつもと ゆきひろです

[#11675] Re: IO (Re: fork problem?) — Koji Arai <JCA02266@...> 2000/11/30

新井です。

[#11677] Re: IO (Re: fork problem?) — matz@... (Yukihiro Matsumoto) 2000/12/01

まつもと ゆきひろです

[ruby-dev:11635] Re: class variable

From: matz@... (Yukihiro Matsumoto)
Date: 2000-11-22 11:25:22 UTC
List: ruby-dev #11635
まつもと ゆきひろです

In message "[ruby-dev:11631] Re: class variable"
    on 00/11/22, Koji Arai <JCA02266@nifty.ne.jp> writes:

|で確認しました。つまり、
|
|・特異クラスのコンテキストでのクラス変数は
|  (A) 特異クラスのインスタンス(と言っていいの?)がクラスならそのクラス変数
|  (A') そうでなければ特異クラスのクラス変数
|
|・特異クラスのメソッド定義のコンテキストでのクラス変数は
|  (B) 特異クラスのインスタンスがクラスならそのクラス変数
|  (B') そうでなければそのオブジェクトのクラスのクラス変数
|
|ですか?

そうです。正確には「クラスまたはモジュールならば」ですが。

|Foo.foo
|foo.foo
|
|複雑さに追い打ちをかけるようにコンテキストで参照できるクラス
|変数とclass_variablesの出力が異なりますね。仕方ないんだけど。

いや、

|class << Foo
|  # (A)
|  @@bar = 3		# Fooのクラス変数
|  p class_variables	# => [@@klass]		特異クラスのクラス変数

でのclass_variablesの出力は不適切でしょう。この場所では
@@klassは参照できないのですから。

せっかく特異クラス定義で特別扱いをするようになったのですから、
class_variablesの出力もそれに従うべきです。これはすぐに修正
しましょう。

|class << foo
|  # (A')
|  @@baz = 4		# 特異クラスのクラス変数

|えっと、(A')はFooのクラス変数が良いように思うのです。
|
|クラス変数はそのクラスのインスタンス間での情報共有が目的だと
|思うのですが、特異クラスのクラス変数にその役割は持てないので
|はないでしょうか?

私はそうは思いません。

  * 特異クラス定義によってクラス変数が増えるのは良くない。
    Fooのインスタンスで共有されるクラス変数が欲しければ、そ
    のクラスで初期化が行われているべきである。

  * 情報共有の範囲は、その閉じた範囲で行われるべきである。よっ
    て、特異クラス定義ではインスタンス変数と同じようにしか働
    かないとしても、それはそれである。

という理由からです。

|というメッセージから「特異クラス」でなく「仮想クラス」と言っ
|た方が良かったりしますか?で、「String」の部分をインスタンス
|というのはやっぱり変でしたね。なんて呼べば。。。「特異クラス
|で定義されるメソッドのレシーバ?」(長いよ)

個人的には、「特異クラス定義」は、「(特異クラス)定義」ではな
く「特異(クラス定義)」で、その定義されるクラスそのものは、仮
想的なクラスに過ぎないので、virtual classと形容しました。こ
れは「仮想クラス」というひとつの用語ではなく、「仮想的なクラ
ス」という一般的な形容句だと思ってます。

これは、現在の実装でオブジェクトには見えない「特異クラス」が
くっついているというのは実装上の都合で、そうでない実装があっ
ても構わないというニュアンスが含まれています。

より良い用語(群)があれば、それについても考えてみたいです。

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

In This Thread