字典扩展返回组合字典

时间:2015-07-29 16:19:31

标签: ios xcode swift dictionary

我正在尝试以下列方式扩展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循环很好。我甚至评论了第一个检查,第二个仍然有效。谁知道问题是什么?谢谢!

3 个答案:

答案 0 :(得分:2)

字典的通用占位符类型称为键和值,您必须保留这些名称;你不能随便重命名他们K和V.

这是我使用的实现:

AND 
            CASE 
                WHEN @DocType = 1 THEN (c.ClaimID IN (SELECT TNE.ClaimID FROM TNE)
            END

答案 1 :(得分:1)

字典类型已将KeyValue定义为通用变量,因此不需要KV(并导致问题)。

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
        }
    }