Rubyリファレンス: Home

sort (Enumerable)

Edit   History

標準クラス・モジュール > Enumerable > sort

enum.sort

sortメソッドは、要素をソートした配列を作成して返します。要素の順序の比較には<=>演算子が使われ、「要素1 <=> 要素2」の結果が-1なら要素1が先、0なら同じ、1なら要素2が先となります。

次の例は、ハッシュをソートした配列を作ります。ハッシュの各要素は[キー, 値]という配列として比較されます。

scores = { 'Carol' => 90, 'Alice' => 50, 'Bob' => 60, 'David' => 40 }
p scores.sort
[["Alice", 50], ["Bob", 60], ["Carol", 90], ["David", 40]]
enum.sort {|a, b| block }

sortメソッドにブロックを渡すと、<=>演算子の代わりにブロックの戻り値によって要素を比較します。ブロック引数abには、比較する2要素が入ります。ブロックの戻り値が-1ならaが小さい、0なら同じ、1ならbが大きい、となります。

次の例は、範囲の数値を逆順にソートします。

p (1..10).sort {|a, b| b <=> a }
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

関連項目