これつぐです。
勘違いしていました。
やりたいのは「stable sort」でしたね。
しかもバグがありました。
#keyが全部同じだとエラーになる……たとえばsort('age')とか
と言うわけで改良版です。
引数の指定も単にkeyを並べるようにしました。
例) ary.sort('age','name')
これで、
ary.sort('name').sort('age')
も意図通りになるはずです。
言い忘れてましたがrubyfaqの7.15が参考になります。
#が、990927版ではコードが書いてないですね。
class Array
alias _sort sort
def sort(key='name',*rest)
keys=[key]+rest
self.filter{|e|keys.dup.filter{|k|e[k]}+[self.index(e),e]}.sort!.filter{|e|e.pop}
end
end