结构
Any
AnyHashable
type-erased 可散列值。
声明
@frozen struct AnyHashable
概述
AnyHashable
类型将相等比较和散列操作转发到底层可散列值,隐藏包装值的类型。
在两种类型(例如 Int
和 NSNumber
)之间可以使用 as
或 as?
进行转换,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+
相关用法
- Swift AnyHashable ==(_:_:)用法及代码示例
- Swift AnyHashable debugDescription用法及代码示例
- Swift AnyHashable base用法及代码示例
- Swift AnyHashable description用法及代码示例
- Swift AnySequence elementsEqual(_:)用法及代码示例
- Swift AnyCollection min()用法及代码示例
- Swift AnyBidirectionalCollection elementsEqual(_:)用法及代码示例
- Swift AnyRandomAccessCollection randomElement(using:)用法及代码示例
- Swift AnyBidirectionalCollection lexicographicallyPrecedes(_:)用法及代码示例
- Swift AnyBidirectionalCollection split(separator:maxSplits:omittingEmptySubsequences:)用法及代码示例
- Swift AnyRandomAccessCollection first(where:)用法及代码示例
- Swift AnyBidirectionalCollection sorted()用法及代码示例
- Swift AnyRandomAccessCollection min()用法及代码示例
- Swift AnySequence shuffled(using:)用法及代码示例
- Swift AnyBidirectionalCollection shuffled(using:)用法及代码示例
- Swift AnyRandomAccessCollection prefix(upTo:)用法及代码示例
- Swift AnyBidirectionalCollection starts(with:)用法及代码示例
- Swift AnyBidirectionalCollection contains(where:)用法及代码示例
- Swift AnyCollection allSatisfy(_:)用法及代码示例
- Swift AnyRandomAccessCollection prefix(through:)用法及代码示例
- Swift AnyBidirectionalCollection suffix(from:)用法及代码示例
- Swift AnyCollection compactMap(_:)用法及代码示例
- Swift AnyIterator suffix(_:)用法及代码示例
- Swift AnyIterator lexicographicallyPrecedes(_:)用法及代码示例
- Swift AnySequence joined()用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 AnyHashable。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。