我有一个有两个参数的函数,最后一个参数是一个回调闭包:
func myAsycTask(name: String, callback: @escaping ()->Void) {
myQueue.async{
self.doTask(name)
callback()
}
}
func doTask(name: String) {...}
我想让第二个回调闭包参数可选。我试图将上面的函数重新定义为:
func myAsycTask(name: String, callback: @escaping ()->Void? = nil) {
myQueue.async{
self.doTask(name)
callback()
}
}
我得到一个编译器错误:
Nil default argument value of cannot be converted to type '
() ->
'
那我怎样才能达到我需要的呢?
最佳答案
您当前的代码意味着 Void
是闭包中的可选返回值(这没有多大意义,因为 Void
已经什么都不是了)。您应该将参数括在方括号中,然后将其设为可选。
func myAsycTask(name: String, callback: (() -> Void)? = nil)
关于ios - 将闭包作为函数的可选参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47153628/