原标题:面试被虐题:说说 JVM 系语言的函数式编程
Java中的函数式编程
函数式编程在上世纪五十年代就有了,只不过在工业界一直不温不火,最近十年才被广泛认知。其理论基础也并非为编程而设计,而是一种数学抽象(Lamda演算),其实初中就学过了,λ表达式。
在 JS(建议把 JS 作为函数式编程思想学习的入门语言,Java 的实现略显臃肿,可能不太便于理解)当中,函数式编程算是应用比较多的了。各现代高级编程语言,都或多或少地支持了函数式编程。
一些基本特点总结:
相比平常的指令式编程,函数式编程更在乎执行结果而非过程;
函数是一等公民,可以像普通的数值、引用等变量一样赋值、作为参数传递、作为返回值;
函数是纯函数,即函数不能产生副作用,如不能修改全局变量等,固定的输入就映射固定的输出。
简单示意一下,不代表任何语言,因为不同语言在实现方式上有差异,但核心思想不变:
1//定义一个函数g,并赋值给f
2f=g(x,y)=x+y
3//写一个方法,函数作为参数传递
4printF(g){
5print(g(1,2))
6}
7//调用方法