我有这个功能:
func getEvents(completion:@escaping (Bool) -> ()) {
//here I do some async stuff
completion(asyncstuffresult)
}
在某些情况下,我想等待这个函数的结果,所以我称之为
getEvents { (success) in
//whatever
}
然而,有时候我想要解雇这个功能,而不是真正关心它是如何,或者特别是何时执行。
在这种情况下,我宁愿这样称呼它
getEvents()
为了清洁
是否有允许我这样做的语法?
答案 0 :(得分:0)
1。您可以将func
更改为
func getEvents(completion: @escaping ((Bool) -> Void)? = nil)
正如Apple所做的那样
func dismiss(animated flag: Bool, completion: (() -> Void)? = nil)
2。另一种方法是将“empty”处理程序设置为closure的默认值:
func getEvents(completion: @escaping ((Bool) -> Void) = { _ in })
所有情况都允许您在没有闭包参数的情况下将func调用为getEvents()
。
答案 1 :(得分:0)
将completion
更改为可选项,如下所示:
func getEvents(completion:@escaping ((Bool) -> Void)? = nil) {
//here I do some async stuff
completion?(asyncstuffresult)
}
请注意上面?
中的可选completion?(asyncstuffresult)
,只有在给定时才执行completion
。并且您将能够实现所需的用法(不必必须必须通过completion
处理程序)
getEvents()