How to properly implement the Equatable protocol in a class hierarchy?

前端 未结 4 992
不知归路
不知归路 2021-01-01 19:53

I\'m trying to implement the == operator (from Equatable) in a base class and its subclasses in Swift 3. All of the classes will only be used in Sw

4条回答
  •  星月不相逢
    2021-01-01 20:26

    Following rmaddy's answer, I came up with a guard approach for testing equality:

    Base.swift


    static func ==(lhs: Base, rhs: Base) -> Bool {
        // ensure class properties match
        guard lhs.x == rhs.x else {
            return false
        }
    
        return true
    
    }
    

    Subclass.swift


    static func ==(lhs: Subclass, rhs: Subclass) -> Bool {
        // ensure base class properties match
        guard lhs as Base == rhs as Base else {
            return false
        }
    
        // ensure class properties match
        guard lhs.y == rhs.y else {
            return false
        }
    
        return true
    }
    

    ```

提交回复
热议问题