Lorsque je crée une fonction, je peux rendre un paramètre facultatif en lui donnant une valeur par défaut, comme ceci:
func foo(bar: String = "foobar") {}
Je veux faire la même chose (le rendre facultatif) avec un bloc d'achèvement. J'ai essayé ce qui suit:
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})
Comment puis-je faire ceci?
MODIFIER:
Ceci est/était une question en double, désolé pour cela. Cependant, je n'ai pas trouvé la solution dans la question d'origine. La réponse de Nathan est donc la meilleure
Dans Swift 3:
func foo(completionBlock: (String) -> () = { _ in }) {}
Si vous souhaitez utiliser par défaut nil
:
func foo(completionBlock: ((String) -> ())? = nil) {
}
Si votre bloc d'achèvement par défaut est très simple, vous pouvez utiliser une fermeture:
// 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) -> () = {} ) {
// ...
}
Si votre bloc d'achèvement par défaut est plus long qu'une ligne, mieux vaut le décomposer comme sa propre fonction:
func defaultCompletion(result: String) {
// ...
}
func foo(completionBlock: ((String) -> ()) = defaultCompletion) {
}