Mở rộng câu trả lời tuyệt vời của @ MartinR.
Swift cần để có thể suy ra rằng cb
là loại (Int, Int)->()
, hoặc bạn rõ ràng có thể thiết lập các loại:
let cb: (Int, Int)->() = { a, b in print("success") }
Sau đó, bạn có thể nhận thấy rằng a
và b
là không sử dụng và thay thế chúng với _
:
let cb: (Int, Int)->() = { _ in print("success") }
Tại sao chúng ta có thể lấy đi một đơn _
khi chức năng nhận 2 tham số? Trong trường hợp này, Swift biết có 2 tham số, do đó, _
chiếm vị trí của bộ chứa tất cả các tham số. Nó thay thế (_, _)
.
Bạn có thể sử dụng _
với câu trả lời @ MartinR của:
let cb = { (_:Int, _:Int) in print("success") }
hoặc bạn có thể viết nó thích:
let cb = { (_:(Int, Int)) in print("success") }
có thể được đọc như:
cb
lấy hai tham số kiểu Int
mà nó bỏ qua và in "thành công"
Lời giải thích tuyệt vời. :) –
Cảm ơn Martin. JBM –
Ngoài ra, bạn nhận được lỗi này khi hàm gọi lại trả về một giá trị, nhưng bạn chưa nhập 'giá trị trả về' vào kết thúc ... –