什么是函数式编程?它是一种使用函数进行编程的方式。
一个函数对应于一个数学上的函数 : 它接受零个或多个参数,生成一个或多个结果,并且不会有任何副作用。
13.2.1 函数式Java编程
在Java语言中,如果你希望编写函数式的程序,首先需要做的是确保没有人能察觉到你代码的副作用,这也是函数式的含义。
被称为“函数式”的函数或方法都只能修改本地变量。此外,它引用的对象必须是不可修改的对象,还有这个函数或方法不应该抛出异常。
13.2.2 引用透明性
"没有可感知的副作用"(不改变对调用者可见的变量,不进行I/O,不抛出异常)
的这些限制都隐含着引用透明性
。
如果一个函数只要传递同样的参数值,总是返回同样的结果,那这个函数就是引用透明的。
函数无论在何处,何时调用,如果使用同样的输入总能持续地得到相同的结果,就具备了函数式的特征。
在函数式编程中,你应该选择引用透明的函数。