例如,如果我在irb中键入以下内容,则会返回Fixnum。
20.class
=> Fixnum
此外,
20.between?(10, 30)
=> true
但是,当我查看Ruby文档时,它会说.between?是可比较模块的一部分,我还没有打电话。
答案 0 :(得分:4)
这是因为Fixnum
包含Comparable
。
Fixnum.ancestors
# => [Fixnum, Integer, Numeric, Comparable, Object, Kernel, BasicObject]
除非被更近的祖先(或其本身)覆盖,否则无论在祖先上定义什么都是可用的。
答案 1 :(得分:1)
Fixnum
包括(mixin)Comparable
模块:
p Fixnum.included_modules
# [Comparable, Kernel]