我正在合并需要在uniquingKeysWith中根据键值执行不同操作的词典。在一次合并中,我需要以下依赖于键的行为:
["sum":1] + ["sum":2] --> ["sum":3]
["accum":"A"] + ["accum":"B"] --> ["accum":["A", "B"]]
["negate":true] + ["negate":true] --> ["negate":false]
["first":"A"] + ["first":"B"] --> ["first":"A"]
["last":"A"] + ["last":"B"] --> ["last":"B"]
当然,这需要了解uniquingKeysWith中的“sum”、“accum”、“last”键,我认为它应该在这里。
然而,在uniquingKeysWith中,密钥的值似乎是不可知的,因此,似乎不可能使用包括uniquingKeysWith在内的方法。我已恢复手工合并。这是对的吗?这不应该包含在将来的版本中吗?
最佳答案
我想你想要这样的东西:
class MyDict {
let sum: Int
let acum: [String]
let negate: Bool
let first: String
let last: String
init(sum: Int, acum: [String], negate: Bool, first: String, last: String) {
self.sum = sum
self.acum = acum
self.negate = negate
self.first = first
self.last = last
}
}
func +(lhs: MyDict, rhs: MyDict) -> MyDict {
return MyDict(sum: lhs.sum + rhs.sum, acum: lhs.acum + rhs.acum,
negate: lhs.negate != rhs.negate, first: lhs.first, last: rhs.last)
}
let a = MyDict(sum: 1, acum: ["A"], negate: true, first: "a", last: "aa")
let b = MyDict(sum: 2, acum: ["B"], negate: true, first: "b", last: "bb")
a + b //== MyDict(sum: 3, acum: ["A","B"], negate: false, first: "a", last: "bb")
我唯一不知道的是你想让negate做什么
关于swift - 使用uniquingKeysWith的键相关 Action ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50527866/