1.函数的字面量语法
语法:var 变量 = (参数列表)=>{方法体}、 cala的函数字面量的简化方式有两种方式:
第一种方式为:_(占位符)。如果函数中的参数在方法体中只使用了一次,可以用_替换。
第二种方式为:只有一个表达式时,可以省略括号。
def sum(x:Int,y:Int): Int = {
x + y
}
val sum1=(x:Int,y:Int) => {x+y}
val sum2 = (x:Int,y:Int) => x+y
val sum3 :(Int,Int) => Int = {_+_}
val sum4 = (_:Int)+(_:Int)
def main(args: Array[String]): Unit = {
val a = 2
val n = 5
println(s"$a + $n = ${sum1(a,n)}")
println(s"$a + $n = ${sum2(a,n)}")
println(s"$a + $n = ${sum3(a,n)}")
println(s"$a + $n = ${sum4(a,n)}")
}
}
2.把函数作为参数
定义一个接收函数作为参数的函数def a(f:()=>Unit)={},其中函数的类型()=>Unit部分()为函数的参数,Unit为函数的返回值。通过定义字面量传递值时,字面量必须和函数的类型匹配。
//定义一个字面量函数,计算两个数的较大者
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被调用")
println(x(a,b))
}
def main(args: Array[String]): Unit = {
test(getMax,1,2)
}
}
6.Scala部分应用函数
[讲] 如果一个函数包含多个参数,对该函数传递部分参数使得这个函数返回一个函数,那么这种函数叫做部分应用函数。
val mul = (a:Int,b:Int,c:Int)=> a * b * c
def main(args: Array[String]): Unit = {
val rst = mul(2,3,4)
val f = mul(2,3,_)
val rst1 = f(5)
println(rst)
println(rst1)
}
}