我是一名想要了解Ruby对象模型的初学者。
在IRB中,我创建了一个名为MyClass
的类,并开始检查对象模型,代码如下:
2.1.0p0 :013 > MyClass.class
=> Class
2.1.0p0 :014 > MyClass.superclass
=> Object
2.1.0p0 :015 > Class.class
=> Class
2.1.0p0 :016 > Class.superclass
=> Module
2.1.0p0 :017 > Object.class
=> Class
2.1.0p0 :018 > Object.superclass
=> BasicObject
2.1.0p0 :019 > BasicObject.class
=> Class
2.1.0p0 :020 > BasicObject.superclass
=> nil
问题1
当MyClass.class == Class.class
返回true
时,为什么Myclass.superclass
和Class.superclass
不同呢?
2.1.0p0 :021 > Class.class == MyClass.class
=> true
换句话说:它们的超类为什么不同?
问题2
这个图示准确吗? 图示链接
提前感谢您。
MyClass.ancestors => [MyClass, Object, Kernel, BasicObject]
,Class.ancestors => [Class, Module, Object, Kernel, BasicObject]
。 - Cary Swoveland