2016-12-31 125 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中的元素。