Rubyのsortメソッドを使用していると、<=>
の表記をよく目にする。
これはスペースシップ演算子(又は、宇宙船演算子)と呼ばれるものらしい。
2つの値を比較して下記の値を返す。
- 左辺の値よりも右辺の値が大きければ負の数
- 左辺の値と右辺の値が等しければ0
- 左辺の値が右辺の値よりも大きければ正の数
1 <=> 2 # => -1
1 <=> 1 # => 0
1 <=> 0 # => 1
使用例
- 各配列の数値を昇順に並べる。
%w(100 300 200 500 400 200).map(&:to_i).sort { |a,b| a <=> b }
# => [100, 200, 200, 300, 400, 500]
- 各配列の文字列から文字数の少ない順に並べる。
%w(Alice Bob John FooBar).sort{ |a,b| a.length <=> b.length }
# => ["Bob", "John", "Alice", "FooBar"]