2011-03-09 59 views
2

在Ruby 1.9.2 Core API Reference中,它说Object的父对象是BasicObject。但后来它说BasicObject的父对象是Object。这个怎么用?这里发生了什么?Ruby继承循环

回答

2

这必须是文档中的错误。从概念上讲,BasicObject没有父母,实际上,这是由其父母代表nil。 (注:nil,所述对象,不NilClass。)

注意,上RubyDoc.Info,它被正确地示出为具有没有父。

2

你说得对,Object的父母是BasicObject,但BasicObject的父母不是Object。

Object.ancestors # => [Object, Kernel, BasicObject] 
BasicObject.ancestors # => [BasicObject] 
+0

我使用ruby-lang.org的Windows 1.9.2安装程序安装了Ruby。在安装目录中有一个doc文件夹,带有一个ruby19-core.chm。这个参考是我看到我的问题的地方。 – 2011-03-10 02:19:19

+0

我没有该版本的参考。如Jorg写道,它必须是文档中的一个错误。 – sawa 2011-03-10 05:44:59

+1

@Adam Harte:实际上,这可能是文档*处理器*中的一个错误。正如我在我的回答中所写,使用[YARD](http://YARDoc.Org/)生成的[RubyDoc.Info](http://RubyDoc.Info/stdlib/core/BasicObject/)很好,所以故障可能在于[RDoc](http://RDoc.RubyForge.Org/)。毕竟,Object和BasicObject的继承关系实际上并没有出现在Ruby源代码中(因为至少在YARV中生成了CHM文件,它们不具有Ruby源代码,它们在C中实现),这意味着它们必须以某种方式硬编码到RDoc内部。 – 2011-03-10 06:31:02