rubyの基礎メモ【comparison of Fixnum with String failed (ArgumentError)】エラー

sort使ったらエラーが出た。

b = [1, 2, 3, 99, 20.9, "a", "10"]

みたいな配列だったので、

文字列と数値がごちゃ混ぜだけど、どっちで比較すんじゃい!

ってエラーらしい

to_s

p b.sort{|x,y|x.to_s <=> y.to_s}
結果
[1, "10", 2, 20.9, 3, 99, "a"]

to_s メソッドで文字列にしてから比較してみた。

数値比較がよければ

p b.sort{|x,y|x.to_i <=> y.to_i}
結果
["a", 1, 2, 3, "10", 20.9, 99]


ちなみに、rubyのsortメソッドはデフォルト文字列比較らしい


perlと色々違って面白い。