我想用完成处理程序创建一个函数,我想创建处理程序,所以我可以传入nil。
func animate(completion: @escaping((Bool) -> ()) {
//Do stuff
completion(true)
}
我想让make完成处理程序能够在不需要时传递nil,例如:
animate(completion: nil)
它没有工作&我收到错误:
Nil与预期的参数类型不兼容'(Bool?) - > ()
。你能帮帮我怎么做吗?
答案 0 :(得分:-1)
删除@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)")
}