2016-03-17 62 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