0
是否可以将<,>
运算符传递给函数以更改sortInPlace
调用?与复制此功能和更改>
或手动检查另一个参数并使用条件逻辑进行排序相反。通过排序运算符
mutating func sortTasksPriorityAscending() {
self.tasks.sortInPlace {$0.priority > $1.priority}
}
是否可以将<,>
运算符传递给函数以更改sortInPlace
调用?与复制此功能和更改>
或手动检查另一个参数并使用条件逻辑进行排序相反。通过排序运算符
mutating func sortTasksPriorityAscending() {
self.tasks.sortInPlace {$0.priority > $1.priority}
}
什么麻烦???
var arr = [1,2,3,4]
arr.sortInPlace(>)
print(arr) // [4, 3, 2, 1]
你的情况,其中任务是任务的数组
:可比,那么就定义< 例如正确的版本...
struct S: Comparable {
var i: Int
}
func <(lhs: S, rhs: S)->Bool {
return lhs.i < rhs.i
}
func ==(lhs: S, rhs: S)->Bool {
return lhs.i == rhs.i
}
var arr = [S(i: 2),S(i: 3),S(i: 1)]
arr.sortInPlace(<)
print(arr) // [S(i: 1), S(i: 2), S(i: 3)]
arr.sortInPlace(>)
print(arr) // [S(i: 3), S(i: 2), S(i: 1)]
UPDATE
可能我不不明白你的问题?
func foo(arr:[S], sortop: (S,S)->Bool) {
var arr = arr
arr.sortInPlace(sortop)
print(arr)
}
foo(arr, sortop: >)
foo(arr, sortop: <)
IM排序上的自定义属性,我想运营商传递给可能的话 – chris
这是我的回答的功能,不是吗? – user3441734