2011-03-09 82 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