我有一个A符合Equatable协议和实现==功能的类.在子类中,B我==用更多的检查覆盖.
但是,当我在两个实例数组B(两者都有类型Array<A>)之间进行比较时,调用==for A.当然,如果我改变两个阵列的类型Array<B>,==对于B被调用.
我提出了以下解决方案:
A.swift:
internal func ==(lhs: A, rhs: A) -> Bool {
if lhs is B && rhs is B {
return lhs as! B == rhs as! B
}
return ...
}
Run Code Online (Sandbox Code Playgroud)
这看起来很丑陋,必须扩展到每个子类A.有没有办法确保==首先调用子类?