在Swift中从Set <>。index获取int位置

时间:2020-08-18 12:31:24

标签: swift set

我有一个集合集合,我想获取一个元素的索引。我正在使用set的firstIndex函数,但它返回Set.index。如何将其转换为int?

let index = mySet.firstIndex(of: dataSource) // This returns Set<>.index

stdio

2 个答案:

答案 0 :(得分:3)

集合是无序的,例如,尝试使用数组

答案 1 :(得分:1)

将集合索引转换为整数很容易

index.hashValue

但是您会发现该索引不是很有用

Set(["a", "b", "c"]).firstIndex(of: "a")?.hashValue
// 5346078814578125500

这是因为集合使用哈希表作为其基础存储机制。如果您尝试打印索引本身,就会看到此信息

Index(_variant: Swift.Set<Swift.String>.Index._Variant.native(Swift._HashTable.Index(bucket: Swift._HashTable.Bucket(offset: 3), age: -233657665)))

firstIndex返回给您的仅仅是存储该元素的哈希键。它与任何类型的“位置”都没有关系,因为哈希表没有有意义的位置感。