swift Equatable 函数签名的测试

struct Degoo:Equatable {

    var lex:String

    var pex:String

    

    static func == (left:Degoo, right:Degoo) ->Bool{

        return true

    }

}

func == (left:Degoo, right:Degoo) ->Bool{

    return false

}

        let s1 = Degoo.init(lex: "aaa", pex: "bbbb")

        let s2 = Degoo.init(lex: "aaa", pex: "bbbb")

        print(s1 == s2)

报错信息:Ambiguous use of operator '=='

结论1、函数签名完全相同;编译器不知道使用哪个;

结论2: 在只提供Equatable缺省实现的情况下,会优先使用全局的实现函数。

原文地址:https://www.cnblogs.com/feng9exe/p/9856776.html