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缺省实现的情况下,会优先使用全局的实现函数。

posted @ 2018-10-26 15:50  zzfx  阅读(241)  评论(0编辑  收藏  举报