Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

sortとブロック(Hash編)

ブロック処理は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
なにやら盛大にコピペミスをしていたので修正……

*1:Ruby 1.9.3p194 にて確認しました