2015-01-09 44 views
0

我試圖實現一個功能,這將在陣列發現的最小价值的指標:不能援引「<」與類型的參數列表「(T,T)」

func minIndex<T: Equatable>(array: [T]) -> Int { 
    var minValue = array[0] 
    var minIndex = Int() 

    for (index, item) in enumerate(array) { 
     if item < minValue as T { 
      minValue = item 
      minIndex = index 
     } 
    } 
    return minIndex 
} 

但我有一個錯誤「

if item < minValue as T { 

回答

2

您需要的元素爲Comparable,以使他們能夠與<進行比較:有型「(T,T)」」的參數列表上線不能援引「<」

func minIndex<T: Comparable>(array: [T]) -> Int { 
    var minValue = array[0] 
    var minIndex = Int() 

    for (index, item) in enumerate(array) { 
     if item < minValue { // Your " as T" cast is not needed here 
      minValue = item 
      minIndex = index 
     } 
    } 
    return minIndex 
} 

Equatable僅意味着它們可以與==進行比較。

+0

謝謝!如果我在Array擴展中實現它,那麼如何?與此變化: FUNC minIndex () - >內部{ 變種minValue(最小值)=自[0] ... 爲 在枚舉(自)(指數,項目){ 如果項 2015-01-09 21:11:04

+0

@AlesTsurko:您(當前)無法定義只能應用於受限數組類型的擴展方法(例如,要求元素爲Comparable)。有關類似問題,請參閱http://stackoverflow.com/questions/24938948/array-extension-to-remove-object-by-value/24939100#24939100。 – 2015-01-09 21:14:24

相關問題