使用函数来编程的方式,属于数学category里的一个范畴学,早已有之,只不过恰好应用到了编程来了而已。
其核心是:在思考问题时,使用不可变值和函数,函数对一个值进行处理,映射成另一个值。(注意这里的不可变值,搞懂了外什么在函数式接口中不能改变函数外的变量值了,还一般要求是final的)
函数不能有副作用:我就当做是不影响函数外的任何变量吧,就是函数必须要是在自己的方法里面定义变量来操作或者传一个final的变量进来。但是也不会有绝对的不能影响吧,所有如果对使用者没有太大影响的话就可以的吧。另一个理解就是从范畴学来讲:函数式编程只是范畴论的运算方法,跟数理逻辑、微积分、行列式是同一类东西,都是数学方法。所以函数式编程要求函数必须是纯的,不能有副作用。因为它是一种数学运算,原始目的就是求值,不做其他事情,否则就无法满足函数运算法则了。
在函数式编程中,函数就是一个管道(pipe)。这头进去一个值,那头就会出来一个新的值,没有其他作用。
简单说,"函数式编程"是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论。
它具有以下特性:闭包和高阶函数、惰性计算、递归、函数是"第一等公民"、只用"表达式"。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。