var array = [3, 2, 1]
至于Array符合SequenceType,我们使用内置的排序方法可以生成排序元素的新数组。
在Swift 2中,这是通过sort()方法完成的。
let sorted = array.sort() // [1,2,3]
从Swift 3开始,它已重命名为sorted()。
let sorted = array.sorted() // [1,2,3]
至于Array符合MutableCollectionType,我们可以将其代替元素进行排序。
在Swift 2中,这是使用sortInPlace()方法完成的。
array.sortInPlace() // [1,2,3]
从Swift 3开始,它已重命名为sort()。
array.sort() // [1,2,3]
注意:为了使用上述方法,元素必须符合Comparable协议。
您也可以使用闭包对数组进行排序,以定义一个元素是否应该在另一个元素之前排序-不限于元素必须位于的数组Comparable。例如,它没有任何意义的Landmark是Comparable-但你仍然可以排序的用身高,名地标阵列。
struct Landmark { let name : String let metersTall : Int } var landmarks = [Landmark(name: "Empire State Building", metersTall: 443), Landmark(name: "Eifell Tower", metersTall: 300), Landmark(name: "The Shard", metersTall: 310)]
// 按高度排序地标(升序) landmarks.sortInPlace {$0.metersTall < $1.metersTall} print(landmarks) // [Landmark(name: "Eifell Tower", metersTall: 300), Landmark(name: "The Shard", metersTall: 310), Landmark(name: "Empire State Building", metersTall: 443)] // 创建按名称排序的新地标数组 let alphabeticalLandmarks =landmarks.sort{$0.name < $1.name} print(alphabeticalLandmarks) // [Landmark(name: "Eifell Tower", metersTall: 300), Landmark(name: "Empire State Building", metersTall: 443), Landmark(name: "The Shard", metersTall: 310)]
// 按高度排序地标(升序) landmarks.sort {$0.metersTall < $1.metersTall} // 创建按名称排序的新地标数组 let alphabeticalLandmarks =landmarks.sorted{$0.name < $1.name}
注意:如果字符串不一致,则字符串比较可能会产生意外结果,请参阅对字符串数组进行排序。