Scala 高阶函数

一、函数作为参数

highOrderFunc是一个高阶函数,因为它可以接收一个函数作为参数

object PartialFunctionDemo {

  def main(args: Array[String]): Unit = {
    val add = (d: Double) => d + 1
    
    val res = highOrderFunc(add, 5)
    println(res)
    
  }

  def highOrderFunc(f: Double => Double, p: Double) = f(p)

}

二、函数作为返回值

函数f接收一个参数n,返回一个函数(x: Double) => n - x

f(5)(8),f(5)的返回值是一个函数,(8)是上一步返回函数的参数

def main(args: Array[String]): Unit = {
  val f = (n: Double) => (x: Double) => n - x

  val res = f(5)(8)
  println(res) // -3

}