簡素化のため。私はいくつかのユニークな値を持っていると言うことができます - >1 to 10
スウィフトディクショナリでキーとして範囲を使用することはできますか?
から数字が今、私は「最初」の値に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の値を持つことができます。だから私は範囲が動作することができますかと思います。
struct
の代わりにclass
に値を作ることができるので、複数のキーを同じクラスオブジェクトにマップできるようになっていますが、上記のように機能する辞書を作成することは可能でしたか?
データ構造の種類に関する問題あなたは「キー」として範囲が重複している状況を扱う必要があるということを提案しています - これらの範囲の交差点の値をどのような値にマッピングすればよいでしょうか? – Hamish
dict。の文脈では、 'Hashable'に準拠するインスタンスのハッシュ値は、' keys 'を(ハッシュ値に基づいて)異なるビンに配置するために単に使用され、アクセスが試行される場合いくつかのキーを持つビンは、検索されている実際の_unique_キー(これはすべて、辞書内のキーによって償却されたO(1)の値へのアクセスを許可する目的で)の等価性をテストするために進められます。これは、(理論的には 'Hashable'に拡張された' Range 'に対して) '0 ... 10'は一意のキーであり、' 1 ... 10'もハッシュ値が同じであっても一意のキーであることを意味します。 – dfri
特にスウィフトではありませんが、[こちらのQ&A](http://stackoverflow.com/q/2147505/2976878)は良いスタート地点になるでしょう。 – Hamish