我有这个功能:

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 asgetEvents()

10-08 17:00