爲了簡化。可以說我有一些獨特的價值 - >從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