#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 という配列に収めてる'' の。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS