控制流
函数式编程使用以简单拓扑连接的独立的黑盒操作组合而成的较小结构化控制流,从而提升程序的抽象层次。这些连接在一起的操作只是一些能够将状态传递至下一个操作的高阶函数。
使用这种方式可以形成类似这样的代码:
1 | optA().optB().optC().optD(); |
这种链式操作使得程序简洁、流畅并富有表现力,能够从计算逻辑中很好地分离控制流,因此可以使得代码和数据更易推理。
链接方法
方法链是一种能够在一个语句中调用多个方法的面向对象编程模式。当这些方法属于同一个对象时,方法链又称为方法级联。
例如:
1 | 'Functional programing'.substring(0, 10).toLowerCase() + ' is fun'; |
lambda表达式
lambda表达式(在js中也被称为箭头函数)源自函数式编程,比起传统的函数声明,它可以采用相对简洁的语法形式来声明一个匿名函数:
1 | const name = p =>p.fullname; |
递归
递归函数包含以下两个主要部分:
- 基例(也称为终止条件)
- 递归条件
基例是能够令递归函数计算出具体结果的一组输入,而不必再重复下去。
递归条件则处理函数调用自身的一组输入(必须小于原始值)。如果输入不变小,那么递归就会无期限地运行,直至程序崩溃。