我有这个功能:
func getEvents(completion:@escaping (Bool) -> ()) {
//here I do some async stuff
completion(asyncstuffresult)
}
在某些情况下,我想等待这个函数的结果,所以我这样调用它
getEvents { (success) in
//whatever
}
然而,有时我只想启动这个函数,而不是真正关心它是如何执行的,或者具体是何时执行的。
那样的话,我宁愿这样称呼它
getEvents()
为了干净
是否有语法允许我这样做?
最佳答案
一。您可以将func
更改为
func getEvents(completion: @escaping ((Bool) -> Void)? = nil)
就像苹果做的那样
func dismiss(animated flag: Bool, completion: (() -> Void)? = nil)
2.另一种方法是将“empty”处理程序设置为closure的默认值:
func getEvents(completion: @escaping ((Bool) -> Void) = { _ in })
所有情况都允许在不使用闭包参数的情况下调用func as
getEvents()
。