函数式编程Functional Programming 简称FP,是一种编程范式,也就是如何编写程序的方法论
函数式编程最早出现在LISP语言,绝大部分的现代编程语言也对函数式编程做了不同程度的支持比如: Swift,JavaScript, Python, Kotlin,Haskell, Scala等
函数作为Swift的一等公民
特征:函数与其他数据类型一样的地位,可以赋值给其他变量,也可以作为函数参数,函数返回值
函数式编程中最常用的概念:
- 1.柯里化Funtion Currying
- 2.高阶函数Higher-order Function
传统的加法函数
// 如果函数体只有一行,可以把return省略掉
func add(a: Int, b: Int) -> Int {
a + b
}
函数式编程思想: 函数高度可复用
// 如果函数体只有一行,可以把return省略掉
func add(a: Int) -> (Int) -> Int {
return { a + $0 }
}
func add(a: Int) -> (Int) -> Int {
a + $0
}
// 调用示例
// 获取这个函数
let fn = add(a: 3)
// 调用这个函数
let result = fn(3)
print(result)
// 连续调用
let result = add(a: 3)(3)
函数合成,传递两个函数作为参数,返回一个函数
func composite(fn1: @escaping (Int) -> Int,
fn2: @escaping (Int) -> Int)
-> (Int) -> Int {
{ fn2(fn1($0)) }
}
高阶函数(Higher-Order Function)
高阶函数是至少满足下列一个条件的函数
- 1.接受一个或多个函数作为输入(map,filter, reduce,flatMap等)
- 2.返回一个函数
柯里化(Currying)
将一个多参数的函数变化为只接受单个参数的函数,如上示例