From: Shin-ichiro Hara Date: 1999-05-06T15:26:09+09:00 Subject: [ruby-list:14145] Re: Class is a Class. 原です。 In message "[ruby-list:14143] Re: Class is a Class." on 99/05/06, Yukihiro Matsumoto writes: | |まつもと ゆきひろです お忙しい所、細かい質問をしてすいません。(^^; ||OtherClass-->(OtherClass)-->(Object) || ||(i) この前の --> は継承関係ではなく is_a の関係ですよね。 | |はい.横に延びるのがis_a,縦が継承です. あ、なるほど。 ||(ii) 後の --> も is_a ですか? | |違います.継承関係です. なるほどなるほど。 ||(iii) (OtherClass) も is_a Class ですよね。 ||OtherClass も is_a Class ですね。 | |はい. と言うことは、まとめると OtherClass --> (OtherClass) --> Class OtherClass --> Class の全てが is_a で成り立っているわけか。 ||(iv) そもそもメタクラスは何のために必要になったんですか? | |特異メソッドのためです. これって、「クラスというオブジェクトの特異メソッド」すなわち 「クラスメソッド」のため、という意味ですか? すなわち、 メタクラスの継承関係によって、「クラスメソッドの継承」 がひき起こされる と、こういう意味ですか?もしかして、 クラスの特異メソッドは実は特異メソッドではなく、 そのメタクラスの単なるメソッド だとか? ||(v) Class is_a? Class が true である必要は無いのでは? | |必要ってのは良く分かんないです.ClassがClass自身のサブクラス |でない世界というのは存在できるのかもしれませんから,もし存在 |できるのであれば「必要は無い」ですね.あんまり考えてなかった |んですけど. あ、これは Class.new の使い道がないという前提での質問で、 私の勘違いでした。(^^; ||Class.new って使い道無いですよね。 | |Class.newは名前の無いクラスを生成するために使えます. Class.new は使えるんですね! [ruby-list:6755] Re: anonymous class [ruby-list:9677] Re: how to create a instance dinamically using String class. 最初の定数への代入がクラスの命名になるとは!! その瞬間メタクラスが生成されてそれのインスタンスに変身 みたいですね。 定数を制するものは Ruby を制する(某氏談) ||(vi) クラスがオブジェクト(Class is_a? Object という意味だけで ||はなくて OtherClass is_a? Object ということ)であるような言語っ ||て Ruby 以外にもあります?まつもとさんの発明でしょうか。 | |父祖Smalltalkはそのようであったと思います.少なくとも,私の |発明ではないです. そうですか。Ruby の「クラスがオブジェクトである」という考えは 伊達ではなく生きている気がします。 それから「Class is_a Class」からパラドクスが生まれないか心配し たのだけど、大丈夫だし。