Function currying
Function currying translates a single function with multiple arguments into a series of functions each with one argument. Let's examine an example.
Suppose that we have a function that combines firstName and lastName to return the full name as follows:
func extractFullName(firstName: String, lastName: String) -> String {
return "\(firstName) \(lastName)"
} This function could be translated into a curried function as follows:
func curriedExtractFullName(firstName: String)(lastName: String) -> String {
return "\(firstName) \(lastName)"
} As seen from this example, we replace the comma with ) ( parentheses. So now we can use this function as follows:
let fnIncludingFirstName = curriedExtractFullName("John")
let extractedFullName = fnIncludingFirstName(lastName: "Doe") Here, fnIncludingFirstName will already have firstName in it so that, when we use it, we can provide lastName and extract the full name.
Starting with Swift 2.2, Apple deprecated function currying...