Ruby 2.3.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Arrayクラス > sort

instance method Array#sort

sort -> Array[permalink][rdoc]
sort! -> self
sort {|a, b| ... } -> Array
sort! {|a, b| ... } -> self

配列の内容をソートします。要素同士の比較は <=> 演算子を使って行います。sort はソートされた配列を生成して返します。 sort! は self を破壊的にソートし、self を返します。

ブロックとともに呼び出された時には、要素同士の比較をブロックを用いて行います。 ブロックに2つの要素を引数として与えて評価し、その結果で比較します。 ブロックは <=> 演算子と同様に整数を返すことが期待されています。つまり、 ブロックは第1引数が大きいなら正の整数、両者が等しいなら0、そして第1引数の方が小さいなら 負の整数を返さなければいけません。両者を比較できない時は nil を返します。

a = [ "d", "a", "e", "c", "b" ]
p a.sort                                #=> ["a", "b", "c", "d", "e"]

b = ["9", "7", "10", "11", "8"]
p b.sort                                #=> ["10", "11", "7", "8", "9"] (文字列としてソートするとこうなる)
p b.sort{|x, y| x.to_i <=> y.to_i }     #=> ["7", "8", "9", "10", "11"] (ブロックを使って数字としてソート)

# sort_by を使っても良い
p b.sort_by{|x| x.to_i }                #=> ["7", "8", "9", "10", "11"]

[SEE_ALSO] Enumerable#sort_by , Array#sort_by!