当我尝试迁移到Swift 4时,如果你将Void作为输入,我的通用类型的闭包发生了错误.这在Swift 3中运行良好,但现在没有那么多,任何人都知道为什么,这是一个bug还是一个功能?
通过违反显式处理此案例的另一个闭包,有一种解决方法.但是很高兴不必使用这种解决方法并理解为什么在Swift 4中出现此错误.
typealias Handler<T> = (T) -> Void
func foo(completion: Handler<String>) {
completion("fooing")
}
// This worked in Swift 3, but not in Swift 4
func bar(completion: Handler<Void>) {
completion() // Missing argument for parameter #1 in call
}
Run Code Online (Sandbox Code Playgroud)