Donné:
typealias Action = () -> ()
var action: Action = { }
func doStuff(stuff: String, completion: @escaping Action) {
print(stuff)
action = completion
completion()
}
func doStuffAgain() {
print("again")
action()
}
doStuff(stuff: "do stuff") {
print("swift 3!")
}
doStuffAgain()
Existe-t-il un moyen de définir le paramètre completion
(et action
) de type Action?
conservant @escaping
?
Changer le type donne l'erreur suivante:
error: @escaping attribute only applies to function types
En supprimant l'attribut @escaping
, le code est compilé et exécuté, mais ne semble pas être correct car la fermeture completion
échappe à la portée de la fonction.