zoukankan      html  css  js  c++  java
  • swift Equatable 的缺省实现

    Starting from Swift 4.1, all you have to is to conform to the Equatable protocol without the need of implementing the == method. See: SE-0185 - Synthesizing Equatable and Hashable conformance.

    Example:


    Keep in mind that the default behavior for the == is to compare all the type properties (based on the example: lhs.id == rhs.id && lhs.value == rhs.value). If you are aiming to achieve a custom behavior (comparing only one property for instance), you have to do it by yourself:

    At this point, the equality would be based on the id value, regardless of what's the value of value.

    https://stackoverflow.com/questions/37541512/swift-struct-doesnt-conform-to-protocol-equatable

    猜测:下面两者的签名形式应该是相同的

    /// Represents a response to a `MoyaProvider.request`.

    public final class Response: CustomDebugStringConvertible, Equatable {

        public static func == (lhs: Response, rhs: Response) -> Bool {

            return lhs.statusCode == rhs.statusCode

                && lhs.data == rhs.data

                && lhs.response == rhs.response

        }

    }

    public func ==(lhs: ConstraintItem, rhs: ConstraintItem) -> Bool {

        // pointer equality

        guard lhs !== rhs else {

            return true

        }

        

        // must both have valid targets and identical attributes

        guard let target1 = lhs.target,

              let target2 = rhs.target,

              target1 === target2 && lhs.attributes == rhs.attributes else {

                return false

        }

        

        return true

    }

  • 相关阅读:
    Linux常用命令_(系统设置)
    Linux常用命令_(系统管理)
    Linux常用命令_(基本命令)
    敏捷测试的流程
    Web测试Selenium:如何选取元素
    Selenium学习
    Selenium介绍
    Selenium测试规划
    HTTPS传输协议原理
    常见的加密算法
  • 原文地址:https://www.cnblogs.com/feng9exe/p/9856567.html
Copyright © 2011-2022 走看看