module Comparable

Das Comparable Mixin wird von Klassen verwendet, deren Objekte sortiert werden können. Die Klasse muss den <=> Operator definieren, der das Empfängerobjekt mit einem anderen Objekt vergleicht und je nachdem, ob das Empfängerobjekt kleiner als, gleich oder größer als das andere Objekt ist, einen Wert kleiner als 0, 0 oder größer als 0 zurückgibt. Wenn das andere Objekt nicht vergleichbar ist, sollte der <=> Operator nil zurückgeben. Comparable verwendet <=>, um die konventionellen Vergleichsoperatoren (<, <=, ==, >= und >) sowie die Methode between? zu implementieren.

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]

Was gibt es hier

Modul Comparable stellt diese Methoden bereit, die alle die Methode <=> verwenden