我在某些项目中使用“Equatable”协议,但我想知道......通过全局解决方案和通过静态解决方案(可从swift 3获得)?
示例:
class ExampleClass {
let value: Int = 0
}
// #1: Global Approach
extension ExampleClass: Equatable { }
func == (lhs: ExampleClass, rhs: ExampleClass) -> Bool {
return lhs.value == rhs.value
}
// #2: Internal static approach (Swift 3+)
extension ExampleClass: Equatable {
static func ==(lhs: ExampleClass, rhs: ExampleClass) -> Bool {
return lhs.value == rhs.value
}
}
结果似乎相同,但第二种方法对我来说似乎更干净。但实际上真的有区别吗? 最后,我们在两种情况下都做了超载。
我可能的答案就是在swift 3之前:public static func ==(lhs: Self, rhs: Self) -> Bool
以另一种方式宣告,但我只是假设它!