スペースシップ演算子
スペースシップ演算子<=>はsortで使われます。この演算子でクラスに全順序を入れることができます。
class Person attr_reader :name, :age def initialize(name, age) @name = name @age = age end def to_s "#{@name} (#{@age})" end def <=>(o) cmp = age <=> o.age cmp = name <=> o.name if cmp == 0 cmp end end def person(name, age) Person.new(name, age) end people = [ person("Bobby", 19), person("Alice", 23), person("Elvis", 19), person("David", 23), person("Grimm", 19), person("Fredy", 19), person("Chris", 26), person("Haris", 23), ] puts people.sort
実行結果です。基本的に年齢順。年齢が同じなら名前の辞書順になります。
Bobby (19) Elvis (19) Fredy (19) Grimm (19) Alice (23) David (23) Haris (23) Chris (26)