Bye Bye Moore

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

sortとブロック(多重配列編)

多重配列も、Hashと同じ手順でソートすることができます。
ただ、配列に同じデータ型を放り込んでいた場合は注意が必要です。
最後の例にあるように、訳の分からない処理もできてしまいます。

>test_array = [ [22, 44, 67],
                     [1, 0x43, 0b111],
                     [98, 8, 3],
                     [0, 0, 0] ]
#=> [[22, 44, 67], [1, 67, 7], [98, 8, 3], [0, 0, 0]]

> test_array.sort{|a,b| a[0] <=> b[0]}
#=> [[0, 0, 0], [1, 67, 7], [22, 44, 67], [98, 8, 3]]

> test_array.sort{|a,b| b[0] <=> a[0]}
#=> [[98, 8, 3], [22, 44, 67], [1, 67, 7], [0, 0, 0]]

> test_array.sort{|a,b| a[1] <=> b[1]}
#=> [[0, 0, 0], [98, 8, 3], [22, 44, 67], [1, 67, 7]]

> test_array.sort{|a,b| b[1] <=> b[2]}
#=> [[0, 0, 0], [98, 8, 3], [1, 67, 7], [22, 44, 67]]