Ruby

ソート(sort)といっても難しい話はしないの。単に「新しい順番に並べる」みたいな事ね。端末作業とかで一番よくやるソートよね。

基本形

こういうのは、これでいいの。基本形はここね。

配列.sort{|a,b|a <=> b}

ちなみに内容によっては、以下のように省略してもいいらしいわ。

配列.sort

自分自身をソートする場合は、以下ね。

配列.sort!{|a,b|a <=> b}

配列の中身がオブジェクトの場合

Rubyで一番多いソートは、こっちかな。配列の中身が自分で作った物体何とかとか、とにかく何らかのオブジェクトってケースね。

これも難しくないわ。簡単簡単。

たとえば、そのオブジェクトの中にタイムスタンプ(メソッドもtimestamp)が含まれていて、一番新しい順番にソートするとしたら?

配列.sort{|a,b|b.timestamp <=> a.timestamp}

比較で aとbが逆転しているのに注目。 タイムスタンプの中身は基点からの秒数なんだから、新しいってことは大きいって事 だもんね。

逆にいうと、 順列なら古い順になる ってことね。

ファイルを新しい順番に配列に。

色々方法があるけど、たとえばこんなのはどうかな?

files = Dir.glob("*.txt").sort{|a,b|File::stat(b).mtime<=>File::stat(a).mtime}

特定ディレクトリにあるテキストファイルを拾って、更新の新しい順番にソートして files という配列に収めてる の。


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-08-01 (木) 15:25:17