Dado:
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()
¿Hay alguna forma de hacer el completion
parámetro (y action
) de tipo Action?
y también mantener @escaping
?
Cambiar el tipo da el siguiente error:
El atributo @escaping solo se aplica a los tipos de función
Al eliminar el @escaping
atributo, el código se compila y se ejecuta, pero no parece ser correcto ya que el completion
cierre está escapando del alcance de la función.
@escaping
atributo, el código se compila y se ejecuta". Eso se debe a que, como se describe en SR-2444 , seAction?
está escapando de forma predeterminada. Por lo tanto, la eliminación@escaping
al usar el cierre opcional logra lo que necesita.