相关疑难解决方法(0)

Swift:覆盖子类中的==仅在超类中调用==

我有一个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.有没有办法确保==首先调用子类?

overriding equality swift

27
推荐指数
1
解决办法
8588
查看次数

标签 统计

equality ×1

overriding ×1

swift ×1