синтаксис:
let unsortedArray = [98, 23, 643, 678, 2, 568, 1, 234, 556, 4]
let sortedArray = unsortedArray.sort() { (first: Int, second: Int) -> Bool in
if first < second {
return true
} else {
return false
}
}
print("\(sortedArray)")
Обратите внимание, в Swift 2.3, что это sort
, но в Swift 3, она теперь называется sorted
.
Кстати, это может быть упрощена:
let sortedArray = unsortedArray.sort { (first: Int, second: Int) -> Bool in
return first < second
}
Или упрощены использовать анонимные аргументы закрытия:
let sortedArray = unsortedArray.sort {
return $0 < $1
}
Который, потому что есть одно выражение внутри затвора , вы можете просто:
let sortedArray = unsortedArray.sort { $0 < $1 }
Или, еще более упрощается до:
let sortedArray = unsortedArray.sort(<)
Или, так как элементы массива, Int
типов, соответствуют Comparable
, вы можете опустить закрытие целиком и использовать другой sort
метод, который не принимает никаких параметров вообще:
let sortedArray = unsortedArray.sort()
Заметим, что это требует, чтобы элементы массива имеют:
малотоксичны чем оператор (func <
), определенный в Comparable
Соответствие является strict weak ordering над элементами в self
.
Я хочу изучить закрытие и сделать это с закрытием –