【发布时间】:2015-11-10 11:10:45
【问题描述】:
我可能想错了,但这对我来说有点奇怪:
我正在浏览ruby's everything is an object on rubymonk 上的文档,并通过以下示例进入了关于超类的部分:
p Foo.superclass
p Foo.superclass.superclass
p Foo.superclass.superclass.superclass
Foo 是一个类,得到以下内容:
STDOUT:
Object
BasicObject
nil
我有点困惑为什么最后一个是nil,然后我继续检查:
p Foo.superclass.superclass.superclass.superclass
相当于p nil.superclass,我收到以下错误:
undefined method `superclass' for nil:NilClass
当我尝试以下操作时,我变得更加困惑:
为什么我可以在Foo 上调用superclass,而不是nil,当我可以分别在他们的每个类上调用超类时(Class 和NilClass)-Foo 和nil 是其他一些 class 的实例,它们具有 superclasses。
nil 有什么特别之处? nil 和 NilClass 之间缺少什么,NilClass 将有一个 superclass,而 nil 不会有一个?
【问题讨论】: