我曾经以为这Object是所有课程的祖先,但我尝试了让我感到困惑的事情.
Object.superclass # => BasicObject
Object.superclass.superclass # => nil
Object.superclass.superclass.superclass # => undefined method error since nil is not a class
Object.superclass.superclass.class # => Nilclass
Object.superclass.superclass.class.superclass # => Object
Run Code Online (Sandbox Code Playgroud)
除了之外nil,一切都有一个超类,并且nil是一个实例NilClass,所以它不能有超类方法.如何才能Object成为超类Object?
BasicObject是Ruby中所有类的父类
Object的超类是BasicObject,而BasicObject 没有超类.不存在事物的标准占位符为零,因此BasicObject.superclass返回nil.
碰巧nil是NilClass类的一个实例,它是Object的子类.这并不意味着NilClass是BasicObject的超类,或者Object是Object的超类.
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |