在Ruby(1.8.X)
为什么Object都继承了内核并包含它?不仅仅是继承就足够了吗?
irb(main):006:0> Object.ancestors => [Object, Kernel] irb(main):005:0> Object.included_modules => [Kernel] irb(main):011:0> Object.superclass => nil
请注意Ruby 1.9中的情况类似(但有点清晰):
irb(main):001:0> Object.ancestors => [Object, Kernel, BasicObject] irb(main):002:0> Object.included_modules => [Kernel] irb(main):011:0> Object.superclass => BasicObject irb(main):011:0> BasicObject.superclass => nil irb(main):011:0> BasicObject.included_modules => []
Gar*_*eth 12
Object不继承Kernel,它是最终的超类(在Ruby 1.8中).该#ancestors方法的结果包括超类和包含的模块.具体来说,按顺序查找任何特定的呼叫.
在类中包含模块时,它将成为其继承层次结构的一部分.因此,通过包含Kernel Object.ancestors将包括(没有双关语)内核.在ruby版本中<1.9对象位于层次结构的顶部,因此它没有超类