0

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

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

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

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

输出:

// Jazz
// Hip hop
// Classical

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

4

1 回答 1

0

你是对的,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 -> 集

在文档中,我找不到他们存储 Set Types 的确切方式,但据我了解,他们Sets访问的是散列值。

于 2018-03-03T10:22:46.197 回答