函数柯里化(Function Currying)是一种函数式编程技术,将一个接受多个参数的函数转换成一系列接受一个参数的函数的过程。它得名于计算机科学家 Haskell Curry。
柯里化的关键思想是将多参数函数转化为一系列嵌套的单参数函数。每个函数只接受一个参数,并返回一个新的函数,直到所有参数都被提供,最终执行计算并返回结果。
// Example 1
func greet(greeting: String) -> ((String) -> String) {
return { name in
"\(greeting), \(name)!"
}
}
let greetHello = greet(greeting: "Hello")
print(greetHello("Alice")) // 输出: Hello, Alice!
// Example 2
func isGreaterThan(minimum: Int) -> ((Int) -> Bool) {
return { value in
value > minimum
}
}
let numbers = [1, 2, 3, 4, 5]
let filteredNumbers = numbers.filter(isGreaterThan(minimum: 3))
print(filteredNumbers) // 输出: [4, 5]
// Example 3
func add(num: Int) -> (()->(Int)) {
var result = 0
return {
result += num
return result
}
}
let addBy2 = add(num: 2)
print(addBy2())
print(addBy2())
print(addBy2())
// 输出 2 4 6