目录
摘要
高阶函数概念,作为值的函数,函数作为参数,闭包与柯理化
高阶函数
概念
那些以函数作为参数或返回函数的函数被称为高阶函数。
作为值的函数
Scala 中函数可以赋值给变量,这意味着一个函数可以作为另一个函数的参数
import scala.math._
val f = ceil _
println(f(3.14)) //4.0
以上 f 为函数,”_” 表示将 ceil 方法转换为函数
函数作为参数
格式
(函数参数) => 返回值类型
def add(f: (Int) => Int) = f(10)
val x = add((x: Int) => 2)
println(x) //2
以上 add 函数接收另一个函数作为参数,并在函数体内调用此函数,所以 add 函数即为高阶函数。
闭包与柯理化
- 闭包指由代码和非局部变量的自由变量组成的代码块
- 柯理化指接收参数产生新的函数的函数,所以柯理化函数也是高阶函数
def mulBy(factor: Double) = (x: Double) => x * factor
println(mulBy(10)(0.2)) //2.0
另一个种写法
def mul(factor: Double)(x: Double) = x * factor