案例
定义一个函数,形参是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)
}
