乍一看,我认为BasicObject
只是“奠定”Class
(阅读:Class
继承自BasicObject
)
Class.ancestors #=> [Class, Module, Object, Kernel, BasicObject]
Module.ancestors #=> [Module, Object, Kernel, BasicObject]
Object.ancestors #=> [Object, Kernel, BasicObject]
BasicObject.ancestors #=>[BasicObject]
但事情突然变得非常好奇。
Class.class #=> Class
Module.class #=> Class
Object.class #=> Class
BasicObject.class #=> Class
“啊哈!我想。”我们真的在制作Class
:BasicObject = Class.new
的实例。但后来我记得所有这些实例都位于底层Class
的层次结构中Class < Module < Object < Kernel < BasicObject
。
这些类中的每一个都是同时的对象。反过来,系统似乎非常循环。层次结构开始的地方以及它如何与自身融合以形成Ruby的抽象结构?
答案 0 :(得分:1)
在Ruby中,一切都是Object(&lt; BasicObject),类也是如此。类是Class类的对象。 Object类的对象不一定是一个类。但是,类Object是必需的类,因此类BasicObject也是如此。懂了吗?没有?让我们继续。 (正如Matz在他的介绍中所说:)))
(换句话说,你做对了。)
答案 1 :(得分:1)
重新打开僵尸问题,添加我漂亮的图表:)
*Class*
↓
BasicObject ~= 'Parent class of all classes but "inherits" from [Class] - causing an interrelated loop'
↓
Object ~= Class.new(BasicObject) {}
↓
Module ~= Class.new(Object) {}
↓
*Class* ~= Class.new(Module) {}