From: matz@... (Yukihiro Matsumoto) Date: 1999-05-06T15:42:39+09:00 Subject: [ruby-list:14147] Re: Class is a Class. まつもと ゆきひろです In message "[ruby-list:14145] Re: Class is a Class." on 99/05/06, Shin-ichiro Hara writes: | | OtherClass --> (OtherClass) --> Class | OtherClass --> Class | |の全てが is_a で成り立っているわけか。 そんな感じですね. |||(iv) そもそもメタクラスは何のために必要になったんですか? || ||特異メソッドのためです. | |これって、「クラスというオブジェクトの特異メソッド」すなわち |「クラスメソッド」のため、という意味ですか? そういう意味です. |すなわち、 | | メタクラスの継承関係によって、「クラスメソッドの継承」 | がひき起こされる | |と、こういう意味ですか?もしかして、 | | クラスの特異メソッドは実は特異メソッドではなく、 | そのメタクラスの単なるメソッド | |だとか? そういう解釈もできます.ここではクラスの特異クラスを明示的に 表に出してメタクラスと呼んでるわけですから,つまり全ての特異 メソッドはその特異クラスの単なるメソッドです. # 「特異クラス」というのはあくまでも実装上の表現です. |最初の定数への代入がクラスの命名になるとは!! 厳密には必要になったタイミングで定数をスキャンして名前を探し てますけどね. |その瞬間メタクラスが生成されてそれのインスタンスに変身 |みたいですね。 「その瞬間」ってのはクラスが生成された瞬間という意味ですね. 命名された瞬間という意味ではなくて.本来,特異メソッドを格納 する「特異クラス」は特異メソッドが定義された時点で必要に応じ て生成されるものなのですが,クラス(またはモジュール)は特別扱 いで生成時に必ず特異クラス(メタクラス)も一緒に生成してます. まつもと ゆきひろ /:|)