Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

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

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
0
Help us understand the problem. What are the problem?