Scala混合了面向对象和函数式的特性,我们通常将可以做为参数传递到方法中的表达式叫做函数。在函数式编程语言中,函数是“头等公民”,高阶函数包含:作为值的函数、匿名函数、闭包、柯里化等等。

1.作为值的函数

可以像任何其他数据类型一样被传递和操作的函数,每当你想要给算法传入具体动作时这个特性就会变得非常有用。
171 Scala 高阶函数_# Scala
定义函数时格式:val 变量名 = (输入参数类型和个数) => 函数实现和返回值类型和个数。

“=”表示将函数赋给一个变量。

“=>”左面表示输入参数名称、类型和个数,右边表示函数的实现和返回值类型和参数个数。

2.匿名函数

在Scala中,你不需要给每一个函数命名,没有将函数赋给变量的函数叫做匿名函数。
171 Scala 高阶函数_# Scala_02
由于Scala可以自动推断出参数的类型,所有可以写的跟精简一些。
171 Scala 高阶函数_# 云计算/大数据_03
还记得神奇的下划线吗?这才是终极方式。
171 Scala 高阶函数_# 云计算/大数据_04

3.将方法转换成函数

在Scala中,方法和函数是不一样的,最本质的区别是函数可以做为参数传递到方法中。

但是方法可以被转换成函数,神奇的下划线又出场了。
171 Scala 高阶函数_# Scala_05

4.柯里化

柯里化指的是将原来接受两个参数的方法变成新的接受一个参数的方法的过程。