复合类型为Swift字典键?

时间:2016-05-28 04:23:03

标签: swift dictionary

我有一个案例,我希望将值存储在字典中,键是一系列字符串。

例如,在Python中,我只使用元组:

foo = {('a', 'b', 'c'): 10}

在Swift中,字典键必须是Hashable,而元组(结构)不是。阵列都不是。 (我知道这一点,因此,这与"在Swift中我可以使用元组作为字典中的键吗?"问题。答案显然不是。)

我可以编写自己的class ListOfStrings: Hashable类,它只是一个[String],有自己的哈希码,但这似乎是我不应该做的事情,在高处级别的语言。

我可以使用NSDictionary / NSArray,但这似乎也是一个尴尬的解决方案。另外,NSArray的哈希码只是它的长度,这对性能不利。

在Swift中有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以将字符串列表更改为字符串串联,而不是使用:

foo ["a","b","c"] = someInteger

你只需将其写成:

foo ["a"+"b"+"c"] = someInteger

然后字典只是使用字符串作为键,我猜测在代码的其余部分中不会有任何改变。你必须仔细处理正在使用的字符串,以确保你总是得到一个独特的密钥,但我得到的印象是你已经覆盖了它。