Swift 4(BETA)合并字典无法推断参数类型

时间:2017-06-16 01:02:32

标签: swift dictionary merge beta

我在标题中使用Apple文档中的确切示例代码,但是我收到此错误:无法推断通用参数“S”这是Swift 4 BETA WWDC版本中的内容。

var dictionary = ["a": 1, "b": 2]

dictionary.merge(["a": 3, "c": 4])
       { (current, _) in current }
 // ["b": 2, "a": 1, "c": 4]

 // Taking the new value for key "a":
dictionary.merge(["a": 5, "d": 6])
       { (_, new) in new }
 // ["b": 2, "a": 5, "c": 4, "d": 6]

我尝试将字典分配给变量并对类型进行硬编码,但我仍然得到相同的错误。还有其他人能够让这个工作吗?

1 个答案:

答案 0 :(得分:1)

感谢非常敏感的Swift开发人员,我在跟踪了这个bug后立即得到了一个解决方法。 https://bugs.swift.org/browse/SR-4969

var dictionary = ["a": 1, "b": 2]

dictionary.merge(["a": 3, "c": 4].lazy.map { ($0.key, $0.value) }) { (current, _) in current }
// ["b": 2, "a": 1, "c": 4]

// Taking the new value for key "a":
dictionary.merge(["a": 5, "d": 6].lazy.map { ($0.key, $0.value) }) { (_, new) in new }
// ["b": 2, "a": 5, "c": 4, "d": 6]