【发布时间】:2019-11-12 16:53:36
【问题描述】:
我正在努力解决 Dictionary 的以下扩展中的这个小错误。我意识到有一个类似的答案指出在返回变量类型之前声明它可以修复它: Ambiguous use of 'filter' when converting project to Swift 4
但是我不确定“过滤器”类型?任何帮助都会很棒。干杯
func pick(_ keys: [Key]) -> Dictionary {
return filter { (key: Key, _) -> Bool in
keys.contains(key)
}
}
【问题讨论】:
-
您的代码在 Swift 5.1 中运行良好。也许直接升级到那个版本?
-
嗯,在修复所有构建错误之前,我无法迁移。
-
只需注释掉该代码并替换为像
return [:]这样的虚拟实现。 -
啊,我很想先在 4.2 中修复它,因为现在必须留在这个版本中。它还在错误下说明了这一点。
2. Found this candidate (Swift.Dictionary<Key, Value>) -
还有这个候选人:
func filter(_ test: (Key, Value) -> Bool) -> Dictionary { var result = Dictionary() for (key, value) in self { if test(key, value) { result[key] = value } } return result }
标签: swift