在Swift中,表达式() -> () = {}是什么意思?

3

我正在查看一些 Swift 代码,遇到了这个函数签名:

func foo(withCompletion completion: @escaping () -> () = {}) { ... }

我不确定 () -> () = {} 这一部分的含义是什么? 如果这是一个默认值,应该如何使用?
有任何想法吗?
这段代码是用 Swift 3 写的。

1
这是一个返回void的函数。在这种情况下,函数是{}空的。默认情况下不执行任何操作。只要回调函数返回void,就可以添加回调函数。 - Aquila Sagitta
...并且不接受任何参数。 - Price Ringo
1
它可能可以重构为可选项并设置为nil,而不是一个空闭包实现。 - JAL
1
这样写会更清晰:@escaping () -> Void = {} - Alexander
1个回答

7

completion参数的类型为() -> ()。它是一个没有参数并且返回类型为空(void)的闭包。

= {}是该参数的默认值,这意味着如果不需要闭包,则无需传入闭包。

因此,您可以这样调用:

foo(withCompletion: {
    // your code here
})

或者(使用尾随闭包语法):
foo() {
    // your code here
}

或者(如果您不想使用完成闭包):
foo()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接