swift Equatable 函数签名的测试

时间:2025-01-20 17:33:20

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