乍一看,我以为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 的抽象结构?