我试图理解字典的uniqingKeysWith初始值设定项,但在尝试使用匿名闭包指定元组中的哪个值用作唯一键时遇到了一些问题。
let pairsWithDuplicateKeys = [("a", 1), ("b", 2), ("a", 3), ("b", 4)]
let dictionary = Dictionary(pairsWithDuplicateKeys, uniquingKeysWith: {$0.0})
这给了我一个错误"上下文闭包类型'(Int,Int(throws->Int'需要2个参数,但在闭包体中使用了1个",我已经尝试过添加参数,但我不知道它引用的另一个参数是什么。
下面的非匿名版本运行良好,但我想了解匿名版本。
let dictionary = Dictionary(pairsWithDuplicateKeys, uniquingKeysWith: {(key, value) in key})
init(_:uniquingKeysWith:)
中的closure
标识重复键的值。
let pairsWithDuplicateKeys = [("a", 1), ("b", 2), ("a", 3), ("b", 4)]
let dict = Dictionary(pairsWithDuplicateKeys) { (first, _) -> Int in
return first
}
输出:
print(dict) //["a": 1, "b": 2]
另一个例子:
如果您想添加重复密钥的值,则closure
将类似于
let dict = Dictionary(pairsWithDuplicateKeys) { (first, last) -> Int in
return first + last
}
print(dict) //["a": 4, "b": 6]
点击此处了解更多信息。