2009-11-08 106 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源代码:)