Ios 具有nil值的完成处理程序
我想创建一个带有完成处理程序的函数,我想创建一个处理程序,以便传入nilIos 具有nil值的完成处理程序,ios,swift,Ios,Swift,我想创建一个带有完成处理程序的函数,我想创建一个处理程序,以便传入nil func animate(completion: @escaping((Bool) -> ()) { //Do stuff completion(true) } 我希望使make完成处理程序能够在不需要时传入nil,例如: animate(completion: nil) 它不工作&我得到错误信息: Nil与预期的参数类型(Bool?->)()不兼容 。你能帮我怎么做吗?删除@escaping关键字,并通
func animate(completion: @escaping((Bool) -> ()) {
//Do stuff
completion(true)
}
我希望使make完成处理程序能够在不需要时传入nil,例如:
animate(completion: nil)
它不工作&我得到错误信息:
Nil与预期的参数类型(Bool?->)()不兼容
。你能帮我怎么做吗?删除
@escaping
关键字,并通过指定默认值使闭包成为可选的。注意,这种方式实际上保留了可选闭包的转义
func animate(_ completion: ((Bool) -> ())? = nil) {
//Do stuff
completion?(true)
}
可能的用法:
animate({ value in
print("Completion value: \(value)")
})
animate(nil)
animate() // pass nothing, because default value is nil
作为尾随关闭:
animate() { value in
print("Completion value: \(value)")
}
函数参数swift中的闭包可以被视为任何其他参数类型,因此可以成为可选的。