Ruby包含返回false和nil

时间:2009-11-08 17:06:44

标签: ruby class

有人可以解释这种情况下假和零之间的区别是什么:

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

我意识到“字符串不是数字” 并且“并非所有整数都是固定的”

我的想法是天真的和布尔。任何东西包括或不包括,真或假。但似乎有第三种选择,比如,“你在开玩笑吧?” ; - )

有人可以启发我吗?

1 个答案:

答案 0 :(得分: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无关。

这是MRI源代码形式的一些'documentation':)