2016-12-31 3 views
-4
let unsortedArray = [98,23,643,678,2,568,1,234,556,4] { 
    (first:Int , second:Int) -> Bool in 

    if first < second { 
     return true 
    } else{ 
     return false 
    } 
} 

Вышеуказанный код предназначен для сортировки несортированного массива с Swift 2 и Xcode 7.3.Сортировка несортированного массива с закрытием

Я хочу знать, как напечатать результат?

+0

Я хочу изучить закрытие и сделать это с закрытием –

ответ

1

синтаксис:

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.

Смежные вопросы