我想创建一个像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
我不确定是否更好:
或者,使用固定的键列表创建字典的方法(即,您无法添加或删除键,只需更改其值)也可以。
答案 0 :(得分:2)
我认为最简单的方法是创建自己的struct
,其行为方式符合您的要求。我会做这样的事情:
struct MyDict {
private var dictionary = [String: Int]()
subscript(key: String) -> Int? {
get {
return dictionary[key]
}
set {
if newValue! != 0 {
dictionary[key] = newValue
} else {
dictionary.removeValueForKey(key)
}
}
}
}
但请记住,这个结构 NOT 是一个字典,所以你必须实现你需要的每个功能。