There's an echo in my head

日々のメモ。

sortと<=>

2列ソートをやろうとしたんだけど、ここらへんのことをすっかり覚えてなかったので復習。

a <=> ba > bなら1を、a < bなら-1を返す。一致すれば0bに対してaが大きいかどうかを返してて、aが主人公っぽいイメージ(レシーバだから当然か)。

p 1 <=> 2
#=> -1

p 2 <=> 1
#=> 1

p 1 <=> 1
#=> 0

これをsortと組み合わせると次のようになる。

array = %w[1 2 3 4 5]

p array.sort { |a,b| a.to_i <=> b.to_i }
#=> ["1", "2", "3", "4", "5"]

p array.sort { |a,b| b.to_i <=> a.to_i }
#=> ["5", "4", "3", "2", "1"]

a,b<=>の結果とをつなぐ適当な日本語が思いつかないのであとで書く)

このブログに出てくるコードスニペッツは、引用あるいは断りがない限りMITライセンスです。