我有一个集合集合,我想获取一个元素的索引。我正在使用set的firstIndex
函数,但它返回Set.index
。如何将其转换为int?
let index = mySet.firstIndex(of: dataSource) // This returns Set<>.index
答案 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
返回给您的仅仅是存储该元素的哈希键。它与任何类型的“位置”都没有关系,因为哈希表没有有意义的位置感。