我试图在Swift中重载String类的'=='运算符:
public func ==(left: String, right: String) -> Bool
{
let ret = left.caseInsensitiveCompare(right) == NSComparisonResult.OrderedSame ? true : false;
return ret;
}
Run Code Online (Sandbox Code Playgroud)
但每当我尝试在代码上使用它:
func test(a: String) -> Bool
{
if (a == "Just Testing") {
return true;
}
else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
显示以下编译器错误消息:
运算符'=='的模糊使用
我怎样才能解决这个问题 ?谢谢.
正如Cristik所提到的,因为已经==为两个字符串定义了一个运算符,所以你无法定义另一个字符串.一种选择是定义一个新的运算符:
infix operator ==^ {}
func ==^(lhs:String, rhs:String) -> Bool {
return lhs.caseInsensitiveCompare(rhs) == .OrderedSame
}
"abc" ==^ "ABC"
Run Code Online (Sandbox Code Playgroud)