当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Swift AnyHashable用法及代码示例


结构

AnyHashable

type-erased 可散列值。

声明

@frozen struct AnyHashable

概述

AnyHashable 类型将相等比较和散列操作转发到底层可散列值,隐藏包装值的类型。

在两种类型(例如 IntNSNumber )之间可以使用 asas? 进行转换,AnyHashable 使用 type-erased 值的规范表示,以便实例包装任一类型的相同值比较相等。例如, AnyHashable(42) 比较等于 AnyHashable(42 as NSNumber)

您可以将mixed-type 键存储在字典和其他需要Hashable 一致性的集合中,方法是将mixed-type 键包装在AnyHashable 实例中:


let descriptions: [AnyHashable: Any] = [
    42: "an Int",
    43 as Int8: "an Int8",
    ["a", "b"] as Set: "a set of strings"
]
print(descriptions[42]!)                // prints "an Int"
print(descriptions[42 as Int8]!)        // prints "an Int"
print(descriptions[43 as Int8]!)        // prints "an Int8"
print(descriptions[44])                 // prints "nil"
print(descriptions[["a", "b"] as Set]!) // prints "a set of strings"

请注意,AnyHashable 不保证它保留包装值的哈希编码。不要依赖 AnyHashable 生成此类兼容的哈希,因为它使用的哈希编码可能会在标准库的任何两个版本之间发生变化。

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

相关用法


注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 AnyHashable。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。