为什么 Swift 中的 Set 结构没有 Int Index?
Why there's no Int Index for Set struct in Swift?
我知道 Swift 中的字符串没有 Int
索引,因为 Swift 支持字素簇。但是,在 Swift 中使用 Collections 时,Array
支持 Int
索引,但 Set
不支持 Int
索引。这背后的原因是什么?
是的,Set
有 Index
(一种通过集合成员引用、迭代等的方法)。但与 Array
不同的是,Int
没有任何意义(也没有提供实用性)。在数组中,数字索引提供了实用程序,用于快速访问与该索引处的对象关联的内存。但是 Set
使用哈希表来有效地识别集合中的项目,而不是一些 integer-based 偏移量。
实际上,在使用集合时,我们通常会在集合中添加或删除项目并测试成员资格,但我们通常不会使用索引,因为它们是不透明的,而且通常对应用程序开发人员来说意义不大或用处不大。
有点密,但是source code for Set
网上有。它有点复杂,因为它既提供了本机“set”实现,又提供了 NSSet
的桥接。但是大家有什么问题最终还是要在实现中解决。
我知道 Swift 中的字符串没有 Int
索引,因为 Swift 支持字素簇。但是,在 Swift 中使用 Collections 时,Array
支持 Int
索引,但 Set
不支持 Int
索引。这背后的原因是什么?
是的,Set
有 Index
(一种通过集合成员引用、迭代等的方法)。但与 Array
不同的是,Int
没有任何意义(也没有提供实用性)。在数组中,数字索引提供了实用程序,用于快速访问与该索引处的对象关联的内存。但是 Set
使用哈希表来有效地识别集合中的项目,而不是一些 integer-based 偏移量。
实际上,在使用集合时,我们通常会在集合中添加或删除项目并测试成员资格,但我们通常不会使用索引,因为它们是不透明的,而且通常对应用程序开发人员来说意义不大或用处不大。
有点密,但是source code for Set
网上有。它有点复杂,因为它既提供了本机“set”实现,又提供了 NSSet
的桥接。但是大家有什么问题最终还是要在实现中解决。