nto*_*nio 35 completionhandler swift
当我创建一个函数时,我可以通过给它一个默认值来使参数成为可选参数,如下所示:
func foo(bar: String = "foobar") {}
Run Code Online (Sandbox Code Playgroud)
我想用完成块做同样的事情(使它成为可选项).我尝试过以下方法:
func foo(completionBlock: (foo: String) -> () = () -> ())
func foo(completionBlock: (foo: String) -> () = (foo: String) -> ())
func foo(completionBlock: (foo: String) -> () = ((foo: String) -> ()))
func foo(completionBlock: (foo: String) -> () = ((foo: String) in))
func foo(completionBlock: (foo: String) -> () = {(foo: String) in})
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
编辑:
这是一个重复的问题,对不起.但是,我在原始问题中找不到解决方案.所以nathan的答案是最好的答案
Cod*_*ent 40
如果您要默认为nil:
func foo(completionBlock: ((String) -> ())? = nil) {
}
Run Code Online (Sandbox Code Playgroud)
如果您的默认完成块非常简单,您可以使用闭包:
// A default completion block that is simple enough to fit on one line
func foo(completionBlock: (String) -> () = { result in print(result) }) {
// ...
}
// A default completion block that does nothing
func foo(completionBlock: (String) -> () = {} ) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
如果您的默认完成块长于一行,最好将其分解为自己的函数:
func defaultCompletion(result: String) {
// ...
}
func foo(completionBlock: ((String) -> ()) = defaultCompletion) {
}
Run Code Online (Sandbox Code Playgroud)
nat*_*ter 39
在Swift 3中:
func foo(completionBlock: (String) -> () = { _ in }) {}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15457 次 |
| 最近记录: |