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
}