函数式编程的五个鲜明特点:
1.函数是第一等公民。
即函数与其他数据类型一样,处于平等地位,可以赋值给变量,也可以作为参数传入另一个函数,或者作为别的函数的返回值。
2.只用表达式,不用语句
表达式是一个单纯的运算过程,总有返回值;语句是执行某种操作,没有返回值。函数式编程每一步都是单纯的运算,而且都有返回值。
原因是函数式编程的开发动机,一开始就是为了处理运算,不考虑系统的IO。语句属于对系统IO的操作,所以排除在外。
3.没有副作用 所谓副作用,就是指函数内部与外部互动,产生运算以外的其他结果。函数式编程强调没有副作用,意味着要保持独立,所有的功能就是返回一个新的值,没有其他行为,尤其是不修改外部变量的值。
4.不修改变量 函数式编程只返回新的值,不修改系统变量。在其他语言中,变量往往用来保持状态,不修改变量,即不能将状态保持在变量中,函数式编程使用参数保持状态,最好的例子就是递归。由于使用了递归,函数式编程的运行速度往往较慢。
5.引用透明
引用透明指的是函数的运行不依赖于外部变量或状态,只依赖于输入的参数,只要参数相同,返回的结果总是相同的。
函数式编程的价值
1.代码简洁,开发迅速
函数式编程大量使用函数,减少了代码的重复度,因此程序比较短,开发速度较快。
2.接近自然语言,易于理解
函数式编程的自由度很高,可以写出很接近自然语言的代码。
3.更方便的代码管理
函数式编程 不依赖也不改变外部环境,只要输入参数相同,即返回相同的结果。因此,每一个函数即可看做独立单元,有利于测试。
4.易于并发编程
函数式编程不需要考虑死锁,因为它不修改变量,所以根本不需要考虑死锁问题,函数之间并不会相互影响,因此可以用多线程进行处理。
5.代码的热升级
函数式编程没有副作用,即不修改外部变量,所有可以在运行状态下直接升级,不需要重启,也不需要停机。
1.函数是第一等公民。
即函数与其他数据类型一样,处于平等地位,可以赋值给变量,也可以作为参数传入另一个函数,或者作为别的函数的返回值。
2.只用表达式,不用语句
表达式是一个单纯的运算过程,总有返回值;语句是执行某种操作,没有返回值。函数式编程每一步都是单纯的运算,而且都有返回值。
原因是函数式编程的开发动机,一开始就是为了处理运算,不考虑系统的IO。语句属于对系统IO的操作,所以排除在外。
3.没有副作用 所谓副作用,就是指函数内部与外部互动,产生运算以外的其他结果。函数式编程强调没有副作用,意味着要保持独立,所有的功能就是返回一个新的值,没有其他行为,尤其是不修改外部变量的值。
4.不修改变量 函数式编程只返回新的值,不修改系统变量。在其他语言中,变量往往用来保持状态,不修改变量,即不能将状态保持在变量中,函数式编程使用参数保持状态,最好的例子就是递归。由于使用了递归,函数式编程的运行速度往往较慢。
5.引用透明
引用透明指的是函数的运行不依赖于外部变量或状态,只依赖于输入的参数,只要参数相同,返回的结果总是相同的。
函数式编程的价值
1.代码简洁,开发迅速
函数式编程大量使用函数,减少了代码的重复度,因此程序比较短,开发速度较快。
2.接近自然语言,易于理解
函数式编程的自由度很高,可以写出很接近自然语言的代码。
3.更方便的代码管理
函数式编程 不依赖也不改变外部环境,只要输入参数相同,即返回相同的结果。因此,每一个函数即可看做独立单元,有利于测试。
4.易于并发编程
函数式编程不需要考虑死锁,因为它不修改变量,所以根本不需要考虑死锁问题,函数之间并不会相互影响,因此可以用多线程进行处理。
5.代码的热升级
函数式编程没有副作用,即不修改外部变量,所有可以在运行状态下直接升级,不需要重启,也不需要停机。