比较Swift中的两个对象

时间:2014-06-07 02:35:25

标签: swift

如何比较两个通用对象。以下是进行比较的示例代码,此行elem>值会引发错误Could not find overload for '>' that accepts the supplied arguments

func index<T : Equatable>(array: T[], value: T) -> Int {
    for (index, elem) in enumerate(array) {
        if elem > value {
            return index
        }
    }
    return array.count
}

2 个答案:

答案 0 :(得分:7)

来自Swift参考:

  

Equatable协议可以确定相同类型的两个值是否相等。

     

协议中定义了一个必需的运算符重载:==。

无法保证Equatable个对象必须实施>运算符,这可以解释您的错误。

然而,看看Comparable。请注意,可比较只需要重载<==运算符。

但是,如果不是a < b也不是a == b,则可以假定a > b

答案 1 :(得分:2)

你想要可比较,而不是等同。 Equitable只有==