我有一个案例,我希望将值存储在字典中,键是一系列字符串。
例如,在Python中,我只使用元组:
foo = {('a', 'b', 'c'): 10}
在Swift中,字典键必须是Hashable,而元组(结构)不是。阵列都不是。 (我知道这一点,因此,这与"在Swift中我可以使用元组作为字典中的键吗?"问题。答案显然不是。)
我可以编写自己的class ListOfStrings: Hashable
类,它只是一个[String]
,有自己的哈希码,但这似乎是我不应该做的事情,在高处级别的语言。
我可以使用NSDictionary / NSArray,但这似乎也是一个尴尬的解决方案。另外,NSArray的哈希码只是它的长度,这对性能不利。
在Swift中有更好的方法吗?
答案 0 :(得分:0)
您可以将字符串列表更改为字符串串联,而不是使用:
foo ["a","b","c"] = someInteger
你只需将其写成:
foo ["a"+"b"+"c"] = someInteger
然后字典只是使用字符串作为键,我猜测在代码的其余部分中不会有任何改变。你必须仔细处理正在使用的字符串,以确保你总是得到一个独特的密钥,但我得到的印象是你已经覆盖了它。