为了简化。可以说我有一些独特的价值 - >从1 to 10
是否可以在Swift Dictionary中使用范围作为键?
数字现在我想1-5
地图的价值“第一”,我想6-10
地图值“第二”
有没有一种方法我可以创建或者扩展字典以像下面一样工作?
let dict: [Range<Int> : String]
的目标是有以下结果:
print(dict[1]) // prints first
print(dict[2]) // prints first
print(dict[3]) // prints first
print(dict[7]) // prints second
print(dict[8]) // prints second
print(dict[9]) // prints second
我目前做的方式是简单地有多个键映射到相同的值。但我的字典有时可能有60k值。所以我想知道如果一个范围可以工作。
我知道我可以将值变成class
而不是struct
,这样多个键可以映射到同一个类对象,但我想知道是否简单地创建一个像上面那样工作的Dictionary是可能的?
这种数据结构的问题哟我建议你需要处理的情况下,你有重叠范围作为'关键' - 这些范围的交集中的值应该映射到什么值? – Hamish
还要注意,在字典的上下文中,符合'Hashable'的实例的哈希值仅用于将“keys”放置在不同的bin中(基于hash值),并且只有在尝试访问一个带有几个键的二进制文件将进入字典,以检测被搜索的实际_unique_键的相等性(所有这些都允许通过字典中的键对O(1)的值进行分段访问)。这意味着(理论上'范围'扩展到'Hashable'),'0 ... 10'是一个唯一的键,'1 ... 10'也是一个唯一的键,即使它们的hashvales是相同的。 – dfri
不是特别的Swift,但[这个问答](http://stackoverflow.com/q/2147505/2976878)可能是一个很好的起点。 – Hamish