Tình huống phổ biến nhất mà bạn muốn trả về một hàm từ một hàm trong Swift là gì?Khi nào để trả về một hàm từ một hàm khác trong Swift
Trong mã bên dưới, tôi trả về một hàm nhưng tôi không thực sự thấy mục đích vì hàm tôi đang quay lại nằm bên trong hàm đang trả về hàm đó. Lý do tôi bối rối là bởi vì chúng ta có thể thực hiện điều tương tự chỉ với một chức năng.
func person() -> ((String, Int) -> String) {
func info(name: String, age: Int) -> (String) {
return "\(name) is \(age) old"
}
return info
}
let nathan = person()
nathan("Nathan", 3)
print(nathan("Nathan", 3))
Ai đó có thể chỉ ra các tình huống phổ biến mà bạn muốn trả về hàm và có thể minh họa một ví dụ tốt hơn?
Tôi muốn hiểu điều này vì đây là nền tảng cho lập trình nói chung không chỉ Swift (tôi nghĩ).
Đây là một khái niệm lập trình chức năng, không nhất thiết phải là cơ sở cho lập trình. Bạn nên đọc về Lập trình chức năng và khái niệm 'currying'. Xem liên kết này ví dụ: https://en.wikipedia.org/wiki/Currying Một trong những lợi thế là mỗi chức năng chỉ có trong 1 đối số. –
@LaurentRivard lưu ý rằng việc cắt cà ri sẽ có khả năng bị xóa khỏi swift: https://github.com/apple/swift-evolution/blob/master/proposals/0002-remove-currying.md – luk2302
Hãy xem [câu trả lời của tôi ở đây] (http://stackoverflow.com/a/34566757/2442804) cho một ví dụ về cách sử dụng các chức năng đóng như thực tế trả về/sử dụng đối tượng – luk2302