我试图超载' ==' Swift中String类的运算符:
public func ==(left: String, right: String) -> Bool
{
let ret = left.caseInsensitiveCompare(right) == NSComparisonResult.OrderedSame ? true : false;
return ret;
}
但每当我尝试在代码中使用它时:
func test(a: String) -> Bool
{
if (a == "Just Testing") {
return true;
}
else {
return false;
}
}
正在显示以下编译器错误消息:
操作员的模糊使用' =='
我该如何解决这个问题? THX。
答案 0 :(得分:7)
正如Cristik所提到的,由于已经为两个字符串定义了==
运算符,因此您无法定义另一个字符串。一种选择是定义一个新的运算符:
infix operator ==^ {}
func ==^(lhs:String, rhs:String) -> Bool {
return lhs.caseInsensitiveCompare(rhs) == .OrderedSame
}
"abc" ==^ "ABC"
答案 1 :(得分:1)
这是因为Swift已经为两个String值定义了==
运算符:
public func ==(lhs: String, rhs: String) -> Bool
并且它不知道选择哪一个,因为您还提供了一个实现。