#author("2019-08-01T15:25:17+09:00","default:yakumo_murakami","yakumo_murakami")
[[Ruby]]
ソート(sort)といっても難しい話はしないの。単に「新しい順番に並べる」みたいな事ね。端末作業とかで一番よくやるソートよね。
#contents
* 基本形 [#o7fac3a2]
こういうのは、これでいいの。基本形はここね。
配列.sort{|a,b|a <=> b}
ちなみに内容によっては、以下のように省略してもいいらしいわ。
配列.sort
自分自身をソートする場合は、以下ね。
配列.sort!{|a,b|a <=> b}
* 配列の中身がオブジェクトの場合 [#u253460f]
Rubyで一番多いソートは、こっちかな。配列の中身が自分で作った物体何とかとか、とにかく何らかのオブジェクトってケースね。
これも難しくないわ。簡単簡単。
たとえば、そのオブジェクトの中にタイムスタンプ(メソッドもtimestamp)が含まれていて、一番新しい順番にソートするとしたら?
配列.sort{|a,b|b.timestamp <=> a.timestamp}
比較で aとbが逆転しているのに注目。 ''タイムスタンプの中身は基点からの秒数なんだから、新しいってことは大きいって事'' だもんね。
逆にいうと、 ''順列なら古い順になる'' ってことね。
* ファイルを新しい順番に配列に。 [#b7927293]
色々方法があるけど、たとえばこんなのはどうかな?
files = Dir.glob("*.txt").sort{|a,b|File::stat(b).mtime<=>File::stat(a).mtime}
''特定ディレクトリにあるテキストファイルを拾って、更新の新しい順番にソートして files という配列に収めてる'' の。