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...