私はキーを一連の文字列として辞書に値を格納したい場合があります。 Pythonで化合物タイプはスウィフト辞書キーですか?
は、例えば、私はタプルを使用したい:スウィフトで
foo = {('a', 'b', 'c'): 10}
を、しかし、辞書のキーはハッシュ可能でなければならず、タプル(という構造体)がありません。どちらも配列ではありません。 (私はこれを知っているので、これは「速攻では辞書の中のキーとしてタプルを使うことはできますか?」という質問とは異なります)。
私は自分で書くことができますclass ListOfStrings: Hashable
クラスはそれ自身のハッシュコードを持つ[String]
ですが、それは高水準言語でやってはならないことのようです。
私はNSDictionary/NSArrayを使うことができましたが、それはまた厄介な解決策のようです。さらに、NSArrayのハッシュコードは単純にその長さに過ぎず、パフォーマンスには向いていません。
Swiftでこれを行うより良い方法はありますか?
'NSMutableSet'または' NSSet'は動作しますか? –
l'l'l:鍵として意味しますか?私の文字列の順序を失うだけでなく、それはサイズをハッシュコードとして使うことを含め、NSArrayとしてのすべての問題を共有しているようです。http://opensource.apple.com//source/CF/CF-635.19/CFBasicHash.m – You
はい、それはおそらくそれにいくつかのハックなことをすることなく、あなたが望むように動作しない可能性があります。 NSArray上のメンバーオブジェクトをチェックするのにNSSetは一般的に高速です。 –