2016-03-17 58 views
0

是否可以将<,>运算符传递给函数以更改sortInPlace调用?与复制此功能和更改>或手动检查另一个参数并使用条件逻辑进行排序相反。通过排序运算符

mutating func sortTasksPriorityAscending() { 
    self.tasks.sortInPlace {$0.priority > $1.priority} 
} 

回答

0

什么麻烦???

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: <) 
+0

IM排序上的自定义属性,我想运营商传递给可能的话 – chris

+0

这是我的回答的功能,不是吗? – user3441734