Verilen:
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()
completionParametre (ve action) türünü yapmanın Action?ve saklamanın bir yolu var @escapingmı?
Türün değiştirilmesi aşağıdaki hatayı verir:
@escaping niteliği yalnızca işlev türleri için geçerlidir
Çıkarma @escapingniteliğini, kod derler ve ishal, ancak o zamandan beri doğru gibi görünmüyor completionkapatma fonksiyonunun kapsamını kaçıyor.
@escapingniteliği, kod derler ve çalışır" - açıklandığı gibi, çünkü en SR-2444 ,Action?kaçan, varsayılan olarak vardır. Bu nedenle,@escapingisteğe bağlı kapağı kullanırken çıkarmak , ihtiyacınız olanı başarır.