scala教程:lambda表达式的使用

案例

定义一个函数,形参是lambda表达式,函数体中,调用该 lambda表达式,并传入 2 和 3

定义该lambda表达式,实现加减

特点: 与传统方式不同,此案例,数据是固定的,就是 2 和 3,但是算法可以不同,由传入的 lambda表达式决定

完整写法

def main(args: Array[String]): Unit = {
  def fun(f:(Int,Int) => Int):Int={
    return f(2,3)
  }

  val res=fun((a:Int,b:Int)=>a+b)
  println(res)

  val res2=fun((a:Int,b:Int)=>a-b)
  println(res2)
}

图解调用流程:

lambda省略类型

在 f:(Int,Int) => Int 已经定义了 2个 Int型参数,所以在 lambda表达式中不需要指定类型

def main(args: Array[String]): Unit = {
  def fun(f:(Int,Int) => Int):Int={
    return f(2,3)
  }

  val res=fun((a,b)=>a+b)
  println(res)

  val res2=fun((a,b)=>a-b)
  println(res2)
}

在函数体中只出现一次形参,形参 (a,b) => 可省略

def main(args: Array[String]): Unit = {
  def fun(f:(Int,Int) => Int):Int={
    return f(2,3)
  }

  val res=fun(_+_) //第一个_表示第一个形参,第二个_表示第二个形参
  println(res)

  val res2=fun(_-_)
  println(res2)
}

原文出处:/show_1IX1BRL0zYBh.html