为了理解它们是如何BasicObject, Object, and Kernel
相互作用的,我想到了下面的代码,它是从David A Black 的书的page#100中找到的:
class BasicObject
# a scant seven method definitions go here
end
module Kernel
# over 100 method definitions go here!
end
class Object < BasicObject
# one or two private methods go here,
# but the main point is to mix in the Kernel module
include Kernel
end
Object 是 BasicObject 的子类。每个没有显式超类的类都是 Object 的子类。您可以在 irb 中看到此默认值的证据:
class C
end
#=>nil
C.superclass
#=>Object
好的,但是大卫布莱克在他的书中下面的粗体线条让我感到困惑理解:
“每个类都有 Object ——因此是 Kernel 和BasicObject
——在它的祖先中。当然,仍然存在一个悖论,BasicObject
即一个Object
,Object
一个Class
,Class
一个Object
。但正如你之前看到的,类模型中的一点循环有助于跳跃- 启动层次结构;一旦启动,它就会合乎逻辑地运作,而且干净利落。”
以下是我的问题:
- 为什么他提到这种关系是一个悖论,
并且是一个,并且
是一个?
BasicObject
Object
Object
Class
Class
Object
circularity
他在这里想说什么?