class PowerOfTwo
attr_reader :value def initialize(value)
@value = value
end
def <=>(other)
@value <=> other.value
end
def succ
PowerOfTwo.new(@value + @value)
end
def to_s
@value.to_s
end end
p1 = PowerOfTwo.new(4)
p2 = PowerOfTwo.new(32)
puts (p1..p2).to_a
produces:
4 8 16 32
这是搞头上的一个例子: 这里很显然,succ 是定义一个规则,下一个数字是前个数字 的二倍,但自始至终我也没用看到谁去调用这个方法? 而且我在 irb 上做了这样的测试 PowerOfTwo.class.superclass => Module 难道说只要重写了 <=> 就属于 Module 的子类吗?如果是这样的话,succ 一个是 Module 或者其超类的方法,但是我向上并没有发现这个方法,谁可以帮帮我解开这个疑问。