2015-08-17 49 views
0

我正在爲Array寫一個mutaitin函數。我無法比較如下的陣列組件:Swift錯誤:二元運算符'>'不能應用於兩個T操作數

extension Array { 
    mutating func mutFunc() { 
     while self[1]>self[2]{ 

     } 
    } 
} 

數組必須是Int類型的數組。我甚至不能用這種方式來比較。

while Int(self[1])>Int(self[2]){   
} 

我的代碼有什麼問題?

+2

如果你的數組元素的類型沒有與'>'相比,會發生什麼?就像你有一個'[AnyObject]'? – zneak

回答

3

你不能在Swift 1.2或之前做到這一點。這正是Swift 2.0中擴展where子句解決的問題。這樣,您可以只擴展Array,並且其元素類型採用Comparable(甚至Int),因此保證定義了>

extension Array where Element : Comparable { 
    // ... your function involving > goes here 
} 
相關問題