我正在尝试执行以下代码,将元组数组转换为字典,但收到一条编译错误:
“[String : String]”类型的不可变值仅具有名为“updateValue”的可变成员
var array = [("key0", "value0"), ("key1", "value1")]
var initial = [String: String]()
var final = array.reduce(initial) { (dictionary, tuple) in
dictionary.updateValue(tuple.0, forKey: tuple.1)
return dictionary
}
为什么会这样如果initial被宣布为var?这有关系吗@无处可逃 on reduce's签名?
func reduce<U>(initial: U, combine: @noescape (U, T) -> U) -> U
你可以简单地使dictionary
参数可变,前面加上var
:
var final = array.reduce(initial) { (var dictionary, tuple) in
^^^
但请注意,使用reduce
每次迭代都会创建一个新字典,使得算法效率非常低。您可能需要考虑使用传统的 foreach
loop
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)