2009-11-08 103 views
3

有人能解釋假之間無這種情況下,不同的是:紅寶石包括返回false和nil

irb(main):008:0> Fixnum < Integer 
=> true 
irb(main):011:0> Integer < Fixnum 
=> false 
irb(main):012:0> String < Numeric 
=> nil 

我認識到「字符串是不是數字」 ,而且「並非所有的整數是fixnums」

我的想法是天真和布爾。無論是否包含某些東西,是真是假。但似乎有第三種選擇,例如,「你在開玩笑吧?」 ;-)

有人能夠啓發我嗎?

+0

您好形式,只注意到你不接受我的答案。我不夠清楚嗎?你需要更多的澄清? – rfunduk 2009-12-02 19:30:49

回答

9

Object#<方法似乎像這樣,給定代碼A < B

  • 如果A是在繼承鏈(例如,B.kind_of?(A) == true)然後true '更高'。
  • 如果A是在繼承鏈(例如,A.kind_of?(B) == true)然後false '下部'。
  • 如果AB沒有關係,則nil

所以,在你的例子中。 Integer繼承自Fixnum,顯然這意味着Fixnum不會繼承自Integer。當然StringNumeric沒有任何關係。

這裏的一些'documentation'在MRI源代碼:)