为什么我可以调用.between? Fixnum上的方法?

时间:2013-10-05 23:11:31

标签: ruby comparable fixnum

例如,如果我在irb中键入以下内容,则会返回Fixnum。

20.class
=> Fixnum

此外,

20.between?(10, 30)
=> true

但是,当我查看Ruby文档时,它会说.between?是可比较模块的一部分,我还没有打电话。

2 个答案:

答案 0 :(得分:4)

这是因为Fixnum包含Comparable

Fixnum.ancestors
# => [Fixnum, Integer, Numeric, Comparable, Object, Kernel, BasicObject]

除非被更近的祖先(或其本身)覆盖,否则无论在祖先上定义什么都是可用的。

答案 1 :(得分:1)

Fixnum包括(mixin)Comparable模块:

p Fixnum.included_modules

# [Comparable, Kernel]