我的协议只需要>
功能。当我尝试比较符合协议的两个对象时,我给出了一个编译器错误,消息“表达式类型不明确而没有更多上下文”。我宁愿不要求函数isGreaterThan(...)
(或其他东西),如果我可以避免它,我宁愿坚持使用人们习惯比较的东西(>
)。
所以我有2个问题。为什么我不能这样做?有没有更好的方法来做到这一点,或者是一个好的解决方法?
谢谢!
protocol Compare {
func >(lhs: Compare, rhs: Compare) -> Bool
}
class TheClass {
func hey(aCompare: Compare, theCompare: Compare) {
if aCompare > theCompare {
print("aCompare is greater than theCompare")
}
}
}
答案 0 :(得分:0)
我应该使用像>
和Self
协议这样的Equatable
,而不是在Comparable
运算符中使用协议。
protocol Compare {
func >(lhs: Self, rhs: Self) -> Bool
}
class TheClass {
func hey(aCompare: Compare, theCompare: Compare) {
if aCompare > theCompare {
print("aCompare is greater than theCompare")
}
}
}
现在编译..谢谢@jrturton和@ originaluser2