我有一个函数,它接受两个参数,最后一个参数是一个回调闭包:
func myAsycTask(name: String, callback: @escaping ()->Void) {
myQueue.async{
self.doTask(name)
callback()
}
}
func doTask(name: String) {...}
Run Code Online (Sandbox Code Playgroud)
我想使第二个回调闭包参数可选.我试图将上面的函数重新定义为:
func myAsycTask(name: String, callback: @escaping ()->Void? = nil) {
myQueue.async{
self.doTask(name)
callback()
}
}
Run Code Online (Sandbox Code Playgroud)
我收到编译器错误:
Nil默认参数值不能转换为'
() ->'
我怎样才能实现我所需要的呢?
你当前的代码意味着Void在闭包中是一个可选的返回(这没有多大意义,因为Void它已经没有了).您应该将参数括在括号中,然后将其设置为可选.
func myAsycTask(name: String, callback: (() -> Void)? = nil)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
805 次 |
| 最近记录: |