【发布时间】:2016-09-26 11:35:24
【问题描述】:
我有一个案例,我想将值存储在字典中,键是字符串序列。
例如,在 Python 中,我只使用一个元组:
foo = {('a', 'b', 'c'): 10}
不过,在 Swift 中,字典键必须是可散列的,而元组(即结构)则不是。数组也不是。 (我知道这一点,因此,这与“在 Swift 中我可以使用元组作为字典中的键吗?”问题不同。答案显然是否定的。)
我可以编写自己的 class ListOfStrings: Hashable 类,它只是一个 [String],有自己的哈希码,但这似乎是我不应该用高级语言做的事情。
我可以使用 NSDictionary/NSArray,但这似乎也是一个尴尬的解决方案。另外,NSArray 的哈希码只是它的长度,这对性能没有好处。
在 Swift 中有没有更好的方法来做到这一点?
【问题讨论】:
-
NSMutableSet或NSSet可以工作吗? -
l'L'l:你的意思是作为一把钥匙吗?除了丢失我的字符串的顺序之外,这似乎与 NSArray 一样存在所有问题,包括使用大小作为哈希码:opensource.apple.com//source/CF/CF-635.19/CFBasicHash.m
-
是的,如果不对它做一些骇人听闻的事情,它可能不会按照你想要的方式工作。 NSSet 通常更快,但通过 NSArray 检查其中的成员对象。
-
appzYourLife:我不认为它是重复的。这个问题问“你能吗?” (答案是“否”)。这个问题是“我知道这件事是不允许的,那么解决它的常规方法是什么?”
标签: swift dictionary