如何比较两个通用对象。以下是进行比较的示例代码,此行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
}
答案 0 :(得分:7)
来自Swift参考:
Equatable协议可以确定相同类型的两个值是否相等。
协议中定义了一个必需的运算符重载:==。
无法保证Equatable
个对象必须实施>
运算符,这可以解释您的错误。
然而,看看Comparable
。请注意,可比较只需要重载<
和==
运算符。
但是,如果不是a < b
也不是a == b
,则可以假定a > b
。
答案 1 :(得分:2)
你想要可比较,而不是等同。 Equitable只有==
。