模块 Comparable

Comparable 混入模块被可排序对象类使用。该类必须定义 <=> 操作符,用于将接收者与另一个对象进行比较,如果接收者小于、等于或大于另一个对象,则分别返回小于 0、返回 0 或返回大于 0 的值。如果另一个对象不可比较,则 <=> 操作符应返回 nilComparable 使用 <=> 来实现传统的比较运算符(<<===>=>)以及 between? 方法。

class StringSorter
  include Comparable

  attr :str
  def <=>(other)
    str.size <=> other.str.size
  end

  def initialize(str)
    @str = str
  end

  def inspect
    @str
  end
end

s1 = StringSorter.new("Z")
s2 = StringSorter.new("YY")
s3 = StringSorter.new("XXX")
s4 = StringSorter.new("WWWW")
s5 = StringSorter.new("VVVVV")

s1 < s2                       #=> true
s4.between?(s1, s3)           #=> false
s4.between?(s3, s5)           #=> true
[ s3, s2, s5, s4, s1 ].sort   #=> [Z, YY, XXX, WWWW, VVVVV]

这里有什么

模块 Comparable 提供了以下方法,所有这些方法都使用 <=> 方法