sort_byはブロック内の値を使ってソートする

ref = %w(北海道 青森 秋田 岩手)
arr = %w(青森 岩手 北海道 北海道 秋田)

puts arr.uniq.sort_by{|a| ref.index(a)}

実行結果はこうなる。

北海道
青森
秋田
岩手

sort_by{|a| ref.index(a)}は、
ref中のaのインデックスを使ってソートをする、という意味。
だからrefで指定された順番通りにaryがソートされる。


ソースはRuby初心者スレッド Part 12で、
実はいくつか前のエントリから、
ずっとここに書かれていることをネタに投稿していたのだけど、
やっぱりソースはちゃんと書いておくべきなんだろうか。
スクリプトもほとんどそのまんまだし、
書いておくべきかどうかと言ったら、やっぱり書いておくべきなんだろうなぁ。