Help us understand the problem. What is going on with this article?

スペースシップ演算子についてのメモ

More than 1 year has passed since last update.

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"]

参考

パーフェクトRuby

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away