Đượ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 completion
tham số (và action
) của loại Action?
và cũng giữ @escaping
khô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 @escaping
thuộ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.
@escaping
thuộ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ỏ@escaping
khi sử dụng đóng tùy chọn hoàn thành những gì bạn cần.