无法调用'<'使用类型'(T,T)'的参数列表

时间:2015-01-09 20:49:24

标签: swift

我尝试实现一个函数,它将在数组中找到最小值的索引:

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
}

但我有一个错误&#34;无法调用&#39;&lt;&#39;使用类型&#39;(T,T)&#39;&#34;的参数列表;在线:

if item < minValue as T {

1 个答案:

答案 0 :(得分:2)

您需要将元素设为Comparable,以便将它们与<进行比较:

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仅表示可以将它们与==进行比较。