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

Swift 4(测试版)合并字典无法推断参数类型,swift,dictionary,merge,beta,Swift,Dictionary,Merge,Beta,我在标题中使用了苹果文档中的精确示例代码,但我得到了一个错误:无法推断通用参数“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.

我在标题中使用了苹果文档中的精确示例代码,但我得到了一个错误:无法推断通用参数“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]

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

多亏了响应速度非常快的Swift开发人员,我在找到bug后立即找到了解决办法


它对我来说没有lazy,为什么包含它更好呢?你可以看看这篇文章,我认为这样可以避免为未访问的东西分配内存,在这种情况下,它看起来会访问N个节点。哦,顺便说一句,这个bug已经在GitHub的Swift回购协议中修复了。谢谢。这是
LazySequenceProtocol
文档注释中的相关段落:“使用闭包参数的序列操作,例如
map
filter
,通常是急切的:它们立即使用闭包并返回一个新数组。使用
lazy
属性,标准库可以显式地在结果中存储闭包和序列,并将计算推迟到需要时。”感谢您的发现。
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]