Được:
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()
Có cách nào để tạo completiontham số (và action) của loại Action?và cũng giữ @escapingkhông?
Thay đổi loại cho lỗi sau:
Thuộc tính @escaping chỉ áp dụng cho các loại chức năng
Xóa @escapingthuộc tính, mã biên dịch và chạy, nhưng dường như không chính xác vì bao completionđóng đang thoát khỏi phạm vi của hàm.
@escapingthuộc tính, các biên dịch mã và chạy" - Đó là bởi vì, như mô tả trong SR-2444 ,Action?là, theo mặc định, thoát. Vì vậy, loại bỏ@escapingkhi sử dụng đóng tùy chọn hoàn thành những gì bạn cần.