2016-12-31 240 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)") 

注意,在雨燕2.3這是sort,但是在斯威夫特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() 

注意,這需要所述陣列的所述元件具有:

的less-比在 中定義的運算符(func <Comparable一致性是 strict weak ordering 優先於self中的元素。