在第一篇章中,介绍了Scala面向对象和函数式编程的特性,在函数式编程中,函数式头等公民,可以像任何其它数据类型一样被传递和操作.在函数式编程中,我们只需要将逻辑包在函数当中作为参数传入即可.
1 :...把函数当做参数
在Scala中,函数式"头等公民",我们可以在变量中存放函数
val num = 2.2
val fun = scala.math.ceil _
在上述代码中将num设为2.2, fun...,而不是一个固定的函数
同时,我们也可以将函数fun当做参数传递给另一个函数
Array(2.2,1.3,2.1).map(fun)
map方法接收一个函数参数,将它应用到数组中的所有值,然后返回结果中的数组...)
val fun : (Double) => Double = 3 * _
3 : 闭包操作
在Scala中,我们可以在任何作用域内定义函数,在函数体内,你可以访问到相应作用域内的任何变量....接下来复盘一下:
1 : mulBy首次调用将参数变量f赋值为2,该变量在(x:Double) => f
*x 函数体内被引用,该函数被存入了triple
上面的函数就被称之为闭包,闭包由代码和代码用到的任何非局部变量定义构成