読者です 読者をやめる 読者になる 読者になる

Rubyのsortで解らない所が

# -*- coding: utf-8 -*-

# sort式で使われるこの条件は左右のオブジェクトを比較して
# その関係が<がマイナス, =は0, >の場合はプラス
hoge = [3, 4, 9, 6, 1]
p hoge
p hoge.sort { |a, b|
    a.to_i <=> b.to_i
}

p hoge.sort { |a, b|
    b.to_i <=> a.to_i
}

p hoge.sort { |b, a|
    a.to_i <=> b.to_i
}

perlの時もそうだったんだけど。 この

<=>

これでsortされる理屈がいまいちわからない。。。 こういう所が基礎力の無さなんだろうなー。。。

ブロックで渡された引数のa, bを比較してそれを戻してるんだと思うけど。

# sort式で使われるこの条件は左右のオブジェクトを比較して
# その関係が<がマイナス, =は0, >の場合はプラス

例えば上記のarrayの場合

[3, 4, 9, 6, 1]

ブロック変数a, bにはバブルソート的に添字の小さい方から2つずつ入ってくるのかな? この配列の場合9と6が比較された時に>の関係になるから入れ替え。とか。 んー。。。いまいちわからん。

使い方は解るから良いんだけど。このタイミングで押さえたい。