Swift如何存储和检索集类型

时间:2018-03-03 10:04:52

标签: swift collections hashable

访问Set元素很快,Set类型必须是可清除的。

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

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

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

输出:

// Jazz
// Hip hop
// Classical

swift store如何在内存中设置类型并访问它?

1 个答案:

答案 0 :(得分:0)

你是对的,Swift存储了散列值。

  

默认情况下,所有Swift的基本类型(如String,Int,Double和Bool)都是可清除的,并且可以用作设置值类型或字典键类型。没有关联值的枚举大小写值(如枚举中所述)在默认情况下也是可以清除的。

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

  

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

请参阅https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/CollectionTypes.html - &gt;集

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