From: Kanda -mu_star- Daisuke Date: 1998-07-29T13:12:53+09:00 Subject: [ruby-list:8953] Re: nil + 1, or Integer.to_i かんだです。 matz@netlab.co.jp (Yukihiro Matsumoto)さんの書かれた、 「[ruby-list:8951] Re: nil + 1, or Integer.to_i」 からの引用です。 > まつもと ゆきひろです > > In message "[ruby-list:8950] Re: nil + 1, or Integer.to_i" > on 98/07/29, Kanda -mu_star- Daisuke writes: > > | というわけで、質問なのですが。 > | > | ・Object > | 「Kernel と Nil を除く、全てのクラスのスーパークラス」 > | ・Classクラスインスタンスの Nil は無いので、Class#superclass で確認 > | できないんですが、Nil のドキュメントには スーパークラス Object とあ > | ります。どっちが正しいんでしょう? > | ・Kernel ってモジュールだから、書くまでもなくスーパークラスは無いん > | じゃないんですか? > > これは間違いです.正確には「全てのクラスのスーパークラス」で > す(KernelもNilClassも除かない).なんでこんなことになったかっ > ていうと,昔はKernelはクラスで,NilClassはKernelのサブクラス > だったからです.書き直すのを忘れてました. お? Nilのクラス定義って NilClass だったんですか。 |% ruby -e 'p NilClass.superclass' |Object ちゃんと出るや。 > # 英語ドキュメントは正しかった. でも、http://www.netlab.co.jp/ruby/man-1.1/classes.html のヒエラルキー 図では Object と Nil が兄弟になってますよん:) 上で、「Kernel も除かない」ということは、Kernel < Object なわけですか? |% ruby -e 'p Kernel < Object' |false やっぱり違うみたいですけど…。 > | ・hash > | Kernel には hash メソッドがあるみたいですけれど、記述がないです。 > > Kernel#hashはObject#hashとして説明してます. あ、ホントだ。どこかで見たような気はしていたんだが。 ただ、「Kenrel#hash は Object#hash として説明している」ということは、 宣言は Kernel にあるわけですか?