函数式编程是一种编程范式,通过把函数作为第一等公民来构建程序。Swift也支持许多函数式编程的特性。
顶级函数
Swift支持将函数作为变量、参数来传递,这启用了许多函数式的用法:
let add: (Int, Int) -> Int = { (x: Int, y: Int) in
return x + y
}
let result = add(1, 2) // 直接调用
顶级函数是函数式编程的基础。
高阶函数
高阶函数接受其他函数作为参数,或将函数作为输出返回:
func apply(f: (Int) -> Int, x: Int) -> Int {
return f(x)
}
let increment = apply(f: { $0 + 1}, x: 10) // 传递函数作为参数
map、filter、reduce等都是高阶函数。
柯里化
柯里化可以把接受多个参数的函数转换为单参数的链式函数:
func add(x: Int, y: Int) -> Int {
return x + y
}
// 柯里化后
func curriedAdd(x: Int) -> (Int) -> Int {
return { y in
return x + y
}
}
let add2 = curriedAdd(x: 2)
add2(3) // 返回5
这在Swift中实现函数的链式调用。
组合
函数组合是将多个简单函数组合成复杂功能的方式:
let compose = { (f: @escaping (Int) -> Int, g: @escaping (Int) -> Int) in
return { x in
return f(g(x))
}
}
let addOneThenDouble = compose(f: double, g: addOne)
addOneThenDouble(5) // 返回20
组合函数可以创建强大的逻辑。
综上所述,Swift中支持函数式编程可以让代码更简洁优雅。多了解函数式编程范式,可以使我们更好地运用Swift语言的现代特性。