【发布时间】:2015-03-10 15:01:21
【问题描述】:
我想创建一种数据类型,其行为类似于字典,但忽略任何值为 0 的键,例如考虑一个假设的例子:
typealias SpecialDict = Dictionary<String,Int>
let testA: SpecialDict = ["a":1, "b":4, "c":0]
let testB: SpecialDict = ["a":1, "b":4]
testA == testB // should evaluate as true
我不确定是否会更好:
- 覆盖 == 以提供此行为,每次比较两个字典时都要付出代价
- 覆盖 updateValue(_:forKey:) 以便每当我们尝试将值设置为 0 时,它只会从字典中删除相应的键(首选)
- 完全尝试不同的数据类型
另外,创建具有固定键列表的字典的方法(即您不能添加或删除键,只需更改它们的值)也可以。
【问题讨论】:
-
它可能对您的用例没有帮助,但您可以利用将
nil分配给字典值会删除它的事实:var d = ["a":1,"b":2,"c":3];d["c"]=nil;println(d) // no "c" entry。
标签: swift dictionary overriding