0

私はそれObjectがすべてのクラスの祖先だと思っていましたが、混乱するようなことをしてみました.

Object.superclass # => BasicObject
Object.superclass.superclass # => nil
Object.superclass.superclass.superclass # => undefined method error since nil is not a class
Object.superclass.superclass.class # => Nilclass
Object.superclass.superclass.class.superclass # => Object

を除いてnil、すべてにスーパークラスがありnil、のインスタンスでNilClassあるため、スーパークラス メソッドを持つことはできません。Objectのスーパークラスとして取得するにはどうすればよいObjectですか?

4

3 に答える 3

4

「オブジェクトのスーパークラスとしてのオブジェクト」は得られません。得られるのは、「Nilclass のスーパークラスとしてのオブジェクト」です。

于 2013-04-19T10:58:22.410 に答える
1

superclassの方法ですClassNilClassから継承するようになりましたObject。しかし、クラスはクラスメソッドObjectを継承する機会がありません。Class

以下から参照Documentaion

Classes, modules, and objects are interrelated. In the diagram that follows, the vertical arrows represent inheritance,
and the parentheses meta-classes. All metaclasses are instances of the class `Class'.


                         +---------+             +-...
                         |         |             |
         BasicObject-----|-->(BasicObject)-------|-...
             ^           |         ^             |
             |           |         |             |
          Object---------|----->(Object)---------|-...
             ^           |         ^             |
             |           |         |             |
             +-------+   |         +--------+    |
             |       |   |         |        |    |
             |    Module-|---------|--->(Module)-|-...
             |       ^   |         |        ^    |
             |       |   |         |        |    |
             |     Class-|---------|---->(Class)-|-...
             |       ^   |         |        ^    |
             |       +---+         |        +----+
             |                     |
obj--->OtherClass---------->(OtherClass)-----------...

nilはい、それは のオブジェクトであるとして正しいです。これは、クラスの最上位にあるものをNilClass継承します。したがって、メソッドを継承できませんでした。ObjectClassNilclasssuperclass

Object.superclass.superclass #=> nil
nil.superclass #=> undefined method error since nil is not a class
于 2013-04-19T11:08:13.073 に答える