我正在尝试以下列方式扩展Swift的字典类:
extension Dictionary {
func merge<K, V>(dict: [K:V]) -> Dictionary<K, V> {
var combinedDict: [K:V] = [:]
for (k, v) in self {
combinedDict[k] = v
}
for (k, v) in dict {
combinedDict[k] = v
}
return combinedDict
}
}
第一个for循环给出了错误:“不能使用'Key'类型的索引下标'[K:V]'类型的值”,但第二个for循环很好。我甚至评论了第一个检查,第二个仍然有效。谁知道问题是什么?谢谢!
答案 0 :(得分:2)
字典的通用占位符类型称为键和值,您必须保留这些名称;你不能随便重命名他们K和V.
这是我使用的实现:
AND
CASE
WHEN @DocType = 1 THEN (c.ClaimID IN (SELECT TNE.ClaimID FROM TNE)
END
答案 1 :(得分:1)
字典类型已将Key
和Value
定义为通用变量,因此不需要K
和V
(并导致问题)。
extension Dictionary {
func merge(dict: [Key : Value]) -> [Key : Value] {
var combinedDict = self
for (k, v) in dict {
combinedDict[k] = v
}
return combinedDict
}
}
答案 2 :(得分:0)
这段代码怎么样。
extension Dictionary {
func merge(other: [Key: Value]) -> [Key: Value] {
var ret: [Key: Value] = self
for (key, value) in other {
ret[key] = value
}
return ret
}
}