我選一個這樣的數組:排序功能2
var users = ["John", "Matt", "Mary", "Dani", "Steve"]
func back (s1:String, s2:String) -> Bool
{
return s1 > s2
}
sorted(users, back)
但我發現了這個錯誤
「排序」是不可用:所說的「排序()方法集合
在這裏使用sort()方法的正確方法是什麼?
我選一個這樣的數組:排序功能2
var users = ["John", "Matt", "Mary", "Dani", "Steve"]
func back (s1:String, s2:String) -> Bool
{
return s1 > s2
}
sorted(users, back)
但我發現了這個錯誤
「排序」是不可用:所說的「排序()方法集合
在這裏使用sort()方法的正確方法是什麼?
遵循什麼錯誤消息告訴您,以及收集調用sort
:
users.sort(back)
注意,在斯威夫特2,sorted
現在是sort
和老sort
現在sortInPlace
,無一不是被調用到數組本身(它們以前是全局函數)。
要小心,這在斯威夫特3再次改變,其中sort
是,突變的方法,並sorted
是一個返回一個新的數組。
另一種方式是在一個簡單的方式使用封閉:
users.sort({a, b in a > b})
使用封閉的另一種方法是:
var numbers = [2,4,34,6,33,1,67,20]
var numbersSorted = numbers.sort({ (first, second) -> Bool in
return first < second
})
在SWIFT 2.2有多種方式,我們可以使用閉排序功能如下。
考慮陣列
var names:[String] = ["aaa", "ddd", "rrr", "bbb"];
不同的選項進行排序以迅速封閉陣列是爲添加
選項1
// In line with default closure format.
names = names.sort({ (s1: String, s2: String) -> Bool in return s1 < s2 })
print(names)
選項2
// Omitted args types
names = names.sort({ s1, s2 in return s1 > s2 })
print(names)
選項3
// Omitted args types and return keyword as well
names = names.sort({ s1, s2 in s1 < s2 })
print(names)
選項4
// Shorthand Argument Names(with $ symbol)
// Omitted the arguments area completely.
names = names.sort({ $0 < $1 })
print(names)
選項5
這是在排序函數使用閉合的最簡單的方法。
// With Operator Functions
names = names.sort(>)
print(names)
var array = [1, 5, 3, 2, 4]
雨燕2.3
let sortedArray = array.sort()
雨燕3.0
let sortedArray = array.sorted()
這導致類似的值 - [1,10,100,2,20,200]但我期待得到像 - [1,2,10,20,100] – bhakti123