在swift中重载'=='运算符

Jor*_*rge -2 swift

我试图在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)

显示以下编译器错误消息:

运算符'=='的模糊使用

我怎样才能解决这个问题 ?谢谢.

Dav*_*rry 7

正如Cristik所提到的,因为已经==为两个字符串定义了一个运算符,所以你无法定义另一个字符串.一种选择是定义一个新的运算符:

infix operator ==^ {}

func ==^(lhs:String, rhs:String) -> Bool {
    return lhs.caseInsensitiveCompare(rhs) == .OrderedSame
}

"abc" ==^ "ABC"
Run Code Online (Sandbox Code Playgroud)