2015-12-02 28 views
2

我的代碼如下,我想要的功能maxNumer不只是一種類型:二元運算符「<」不能應用於兩個T的操作數

var numbers3 = [3,9,23,67,34,2,7,0,1] 

func maxNumer<T>(array:[T]) -> T { 
    var maxNumer = array[0] 
    for var i = 0; i < array.count-1; i++ { 
     if maxNumer < array[i+1] { //This line gets error as title 
      maxNumer = array[i+1] 
     } 
    } 
    return maxNumer 
} 

我應該如何改變呢?

回答

5

你需要告訴斯威夫特說T符合Comparable協議,以便它允許使用操作<T類型的對象:

func maxNumer<T : Comparable>(array:[T]) -> T { 
//    ^^^^^^^^^^ 
    var maxNumer = array[0] 
    for var i = 0; i < array.count-1; i++ { 
     if maxNumer < array[i+1] { //This line gets error as title 
      maxNumer = array[i+1] 
     } 
    } 
    return maxNumer 
} 
相關問題