【问题标题】:Swift How Store And Retrieve Set TypeSwift 如何存储和检索集合类型
【发布时间】:2018-03-03 10:04:51
【问题描述】:

访问 Set 元素速度很快,而且 Set 类型必须是可散列的。

我认为 Swift 只存储每个元素的散列值,但我发现原始值(未散列)也可以访问。比如这样:

var favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]

for genre in favoriteGenres {
    print("\(genre)")
}

输出:

// Jazz
// Hip hop
// Classical

swift如何在内存中存储Set类型并访问它?

【问题讨论】:

标签: swift collections hashable


【解决方案1】:

你说得对,Swift 存储散列值。

所有 Swift 的基本类型(例如 String、Int、Double 和 Bool)在默认情况下都是可散列的,可以用作设置值类型或字典键类型。默认情况下,没有关联值的枚举案例值(如枚举中所述)也是可散列的。

如果您存储自己的自定义类型,它们必须符合 Hashable 协议。

您可以使用自己的自定义类型作为设置值类型或字典键类型,方法是使它们符合 Swift 标准库中的 Hashable 协议。符合 Hashable 协议的类型必须提供一个可获取的 Int 属性,称为 hashValue。[...]

https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/CollectionTypes.html -> 集

在文档中,我找不到他们存储集合类型的确切方式如何,但据我了解,他们访问的 Sets 是关于散列值的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    相关资源
    最近更新 更多