一.定义
函数式编程是一种编程范式,也就是如何编写程序的方法论.它属于结构化编程的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用.
二.特点
1.函数是第一等公民
指的是函数与其他数据类型一样,处于平等地位,可以赋值给其他变量,也可以作为参数,传入另一个函数,或者作为别的函数的返回值.
2.只用表达式,不用语句.
表达式是一个单纯的运算过程,总是有返回值;语句是执行某种操作,没有返回值.函数式编程要求,只使用表达式,不使用语句.也就是说,每一步都是单纯的运算,而且都有返回值.
3.没有副作用
所谓副作用,指的是函数内部与外部互动(最典型的情况,就是修改全局变量的值),产生运算以外的其他结果.函数式编程强调没有“副作用”,意味着函数保持独立,所有功能就是返回一个新的值,没有其他行为,尤其是不得修改外部变量的值.
4.不修改状态
函数式编程只是返回新的值,不修改系统变量.因此,不修改变量,也是它的一个重要特点.函数式编程使用参数保存状态.
5.引用透明
引用透明,指的是函数的行为不依耐于外部变量或"状态",只依耐于输入的参数,任何时候只要参数相同,引用函数所得到的返回值总是相同的.
三.幂等性
程序的幂等性:
- 概念: 一个函数执行多次皆返回相同的结果.
- 作用: 一个函数被调用多次时,保证内部状态的一致性.
- 对比: 和纯函数相比,幂等性主要强调多次调用,对内部的状态的影响是一样的.而纯函数,主要强调相同的输入,多次调用,输出也相同且无副作用.纯函数一定是幂等的.
- 意义: 在任何可能的情况下通过幂等的操作限制副作用的更新要好得多.确保操作是幂等的,可避免意外的发生.