LoginSignup
22
24

More than 5 years have passed since last update.

[swift]Sort関数とClosure

Last updated at Posted at 2014-11-04

Sort関数とClosureを使った記述方法について調べました。

Sort関数

Sort関数は普通、次のように書く。

var numbers = [1,4,2,3,6,5]
// 降順のソート
// 昇順なら{〜}は省略可 sort(numbers)
sort(numbers) { $0 > $1 }

Closureを使う

Closureを使うとこんな感じ。

var strings = ["a", "e", "d", "b", "c"]
sort(strings) {
    (str1 : String, str2 : String) -> Bool in
    return str1 > str2
}

引数の型や()、returnは省略できる。

sort(strings) { str1, str2 in str1 > str2 }

以下のような書き方もOKらしい。
ターゲットの配列のソート関数を定義する方法。

// ターゲットの配列をソートする
myArr.sort { (lhs, rhs) in return lhs.deadline < rhs.deadline }

// ターゲットの配列をソートして、別の配列へコピーする
let newArr = myArr.sorted { (lhs, rhs) in return lhs.deadline < rhs.deadline }

っていうか、sort() と sorted() があるんですね。。。

$n を使えば、引数も省略できる。

let newArr = myArr.sorted { $0.deadline < $1.deadline }

ちなみにAppleのサンプルに出てきたコード。
やっと解読できました。

// Guarantee that the segments show up in the same order.
var sortedSegmentImageNames = Array(imageToAccessibilityLabelMappings.keys)
sortedSegmentImageNames.sort { lhs, rhs in
    return lhs.localizedStandardCompare(rhs) == NSComparisonResult.OrderedAscending
}
22
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
24