2011-03-09 3 views
2

Ruby 1.9.2 핵심 API 참조 서에서 Object의 부모가 BasicObject임을 나타냅니다. 하지만 BasicObject의 부모는 Object라고합니다. 이게 어떻게 작동합니까? 여기서 무슨 일이 일어나고있는거야?Ruby 상속 루프

답변

2

설명서에는 버그가 있어야합니다. 개념적으로 BasicObject에는 부모가 없으며 실제로는 부모가 nil 인 것으로 표시됩니다. (참고 : nil객체하지 NilClass.) RubyDoc.Info에 올바르게 부모를 갖지 않는 것으로 도시된다

참고.

2

당신은 맞습니다. 객체의 부모는 BasicObject이지만 BasicObject의 부모는 객체가 아닙니다.

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

ruby-lang.org의 Windows 1.9.2 설치 프로그램을 사용하여 Ruby를 설치했습니다. 설치 디렉토리에는 ruby19-core.chm이있는 doc 폴더가있었습니다. 이 참조는 내 문제를 본 곳입니다. –

+0

해당 버전의 참조가 없습니다. Jorg가 쓴 것처럼, 문서의 버그 여야합니다. – sawa

+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 파일이 생성 되었기 때문에 * 루비 소스를 가지지 않기 때문입니다 그들은 C에서 구현됩니다. 즉, RDoc 내부에서 어떻게 든 하드 코드되어야합니다. –