函数式编程中没有赋值语句,因此变量一旦有了值就不会再改变。更通俗的讲,函数式编程没有副作用——除了结算结果,调用函数没有别的作用。这样消除了bug的一个主要来源,也使得执行顺序变得无关紧要。因为没有能够改变表达式值的副作用,可以在任何时候对它求值。由于能够在任何时候对表达式求职,所以可以用变量的值来自由替换表达式,反之亦然——即程序是“引用透明”的。函数式编程是什么理解事物是什么而不是什么往往都很重要。
函数式编程就是编写非有意副作用的程序,如果需要副作用尽可能的延迟副作用发生的时机。如果既有返回值又有副作用,这种程序就不是函数式。引用透明如何让程序更安全没有副作用(并不会改变外界的什么)并不足以让程序编程函数式的,同样函数式编程也不能被外界所影响——函数式程序的输出只能取决于自己的参数,这就意味着函数式代码不能从控制台、文件等读取数据,既函数式代码是引用透明的(不被外界影响到的代码是引用透明的)。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |