Class
,Object
,Kernel
,Enumerable
,Enumerator
,BasicObject
哪个方法用于检测父类和子类?:ancestors
? :kind_of
? 我用这两个方法来检测上面的类,以及查看相对应的 ri,但是结果很乱。
首先检查该类所属的父类:
Class.ancestors #=>Class,Module,Object,Kernel,BasicObject
Object.ancestors #=>Object,Kernel,BasicObject
Kernel.ancestors #=>[Kernel]
Enumerable.ancestors #=>[Enumerable]
Enumerator.ancestors #=>Enumerator,Enmuerable,Object,Kernel,BasicObject
BasicObject.ancestors #=>[BasicObject]
这样子看起来,是不是可以确定他们的关系是这样的?
Class < Object < Kernel < BasicObject
Enumerator < (Enumerable和Object) < Kernel < BasicObject
那么为什么?
Class.kind_of? Object #=>true
Object.kind_of? Class #=> true 可能说所有的类都是Object类的子类,而所有的对象也都是特定类的实例。那么是不是可以不严谨的说凡是类也是对象,凡是对象都是类? 但是它是怎么处理Class和Object这两个类的父子关系的?就像上面方法检测的结果一样?
#同上:
Kernel.kind_of? Object #=>true #:ancestors方法检测Kernel的父类没有Object
Object.kind_of? Kernel #=>true
BasicObject.kind_of? Object #=> true #:ancestors方法检测BasicObject已经是最底层的类的。
新手问题,谢谢!