ブロック処理はRubyのカッコイイ所の一つです。
配列やハッシュに付属しているsortメソッドも、ブロックを使った処理ができます。
今回は、これについて少し調べてみましたので簡単にまとめます。
uec = {:unique => 0b101111, :exciting => 0x56, :campus => 0xff, :chofu => 35}
というハッシュを使って、動作を見ていきます。*1
##昇順ソート(key) > uec.sort{|a,b| a[0] <=> b[0]} #=> [[:campus, 255], [:chofu, 35], [:exciting, 86], [:unique, 47]] ##降順ソート(key) > uec.sort{|a,b| b[0] <=> a[0]} #=> [[:unique, 47], [:exciting, 86], [:chofu, 35], [:campus, 255]] ##昇順ソート(value) > uec.sort{|a,b| a[1] <=> b[1]} #=> => [[:chofu, 35], [:unique, 47], [:exciting, 86], [:campus, 255]] ##降順ソート(value) > uec.sort{|a,b| b[1] <=> a[1]} #=> [[:campus, 255], [:exciting, 86], [:unique, 47], [:chofu, 35]]
異なる進数の数値はもちろん、文字列の並び替えまで対応しています。
やっぱりRubyは凄いですね。
12/12/01
なにやら盛大にコピペミスをしていたので修正……