Scala 函数作为参数传递的示例:含最值计算与函数调用测试

22 阅读1分钟
object Base51 {
  // 定义一个函数,计算两数的和
  def sum(x: Int, y: Int): Int = {
    x + y
  }

  // 定义一个字面量函数,计算两个数的较大者
  val getMax = (x: Int, y: Int) => if (x > y) x else y
  // 定义一个字面量函数,计算两个数的较小者
  val getMin = (x: Int, y: Int) => if (x < y) x else y

  // test 这个函数,它的第一个参数是一个函数
  val test = (x: (Int, Int) => Int, a: Int, b: Int) => {
    println("test被调用")
    x(a, b)
  }

  def main(args: Array[String]): Unit = {
    test(getMax, 1, 2)
  }
}
object Base52 {
  // 部分应用函数,在调用函数的时候,只传入一部分参数。
  val mul = (a: Int, b: Int, c: Int) => a * b * c

  def main(args: Array[String]): Unit = {
    val rst = mul(1, 2, 3)
    val f = mul(2, 3, _) // 第三个参数传入一个 _ ,表示:这个参数先空置,也不能返回最后的计算结果。它的返回值是一个函数,部分应用函数
    var rst1 = f(5) // mul(2,3,5)
    println(rst)
    println(rst1)
  }
}