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が比較された時に>の関係になるから入れ替え。とか。 んー。。。いまいちわからん。
使い方は解るから良いんだけど。このタイミングで押さえたい。