類
A
是類B
的子類。類B
是類C
的子類。a
是類A
的一個對象。b
是類B
的一個對象。下列哪個Ruby表達式不正確?Ruby:爲什麼調用對象上的超類方法會產生錯誤
b.respond_to?('class')
a.superclass == b.class
A.superclass == B
a.class.ancestors.include?(C)
回答這個測驗的問題是(2)。 (1),(3)和(4)是正確的,但是(2)有點混亂。 (2)令人困惑,因爲當我輸入a.superclass
到irb
時,我得到了NoMethodError: undefined method 'superclass' for #<A:0x7fbdce1075f0>
。
但是,當我輸入A.superclass == B
到irb
,我得到true
。
爲什麼我可以在類上調用superclass
而不是在類的對象上?
謝謝你的解釋!測驗問題表示'a'是'A'類的_object_。這是不準確還是不準確,而'a'是'A'的_instance_會更準確嗎? – user86408
短語'a是類A的對象'也是正確的,但不是'a是類對象'。我想在講述一個類的實例時,說「類的對象」在技術上是正確的,但是由於它看起來和聽起來像'類對象'一樣太混亂了。在紅寶石中,「類對象」是A或B或C. – 7stud
好的,謝謝你的幫助和澄清! – user86408