我想创建一个像Dictionary一样的数据类型,但忽略任何值为零的键,例如考虑一个假设的例子:
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
我不确定是否更好:
-
override ==给出这种行为,每次比较两个词典时都要付出代价
-
覆盖updateValue(_:forKey :),这样每当我们尝试将值设置为0时,它只是从字典中删除相应的键(首选)
-
完全尝试不同的数据类型
或者,一种创建具有固定键列表的字典的方法(即,您无法添加或删除键,只需更改其值)也可以 .
1 回答
我想说最简单的方法就是创建自己的
struct
,它可以按照你想要的方式运行 . 我会做这样的事情:但请记住,这个结构是一个字典,所以你必须实现你需要的每个功能 .