1

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

20.class
=> Fixnum

还,

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

但是,当我查看 Ruby 文档时,它说 .between? 是 Comparable Module 的一部分,我还没有调用它。

4

2 回答 2

4

这是因为Fixnum包括Comparable.

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

任何在祖先上定义的东西都是可用的,除非它被更接近的祖先(或它自己)覆盖。

于 2013-10-05T23:15:14.353 回答
1

包含(Fixnummixin)Comparable模块:

p Fixnum.included_modules

# [Comparable, Kernel]
于 2013-10-05T23:16:20.520 回答