Swift 5.0 Hashable

今天更新了Swift 5.0 原本遵守 Hashable 的地方出现了警告

具体使用如下

swift 5.0 写法
struct CacheEntry: Hashable {
    let text: String
    let width: CGFloat
    let insets: UIEdgeInsets
    let index: Int
    func hash(into hasher: inout Hasher) {
        hasher.combine(text)
        hasher.combine(width)
        hasher.combine(insets.top)
        hasher.combine(insets.left)
        hasher.combine(insets.bottom)
        hasher.combine(insets.right)
        // hasher.combine(index)
    }
    static func == (lhs: CacheEntry, rhs: CacheEntry) -> Bool {
        var lhsHasher = Hasher()
        var rhsHasher = Hasher()
        lhs.hash(into: &lhsHasher)
        rhs.hash(into: &rhsHasher)
        return lhsHasher.finalize() == rhsHasher.finalize()
    }
}
let entry1 = CacheEntry(text: "text", width: 100, insets: UIEdgeInsets.zero, index: 10)
let entry2 = CacheEntry(text: "text", width: 100, insets: UIEdgeInsets.zero, index: 11)
let flag = entry1 == entry2
print(flag)
/// 控制台输出 true
/// 如果去掉 `hash(into hasher: inout Hasher) `最后注释的hasher.combine(index)则输出 false

复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值