一、函数的字面量语法
语法:var 变量 = (参数列表)=>{方法体}
它省略了def,函数名以及函数的返回值类型。
/*
函数字面量语法,另一种定义函数的方式
*/
// 定义一个函数,求两个数的和
def sum1(x:Int,y:Int):Int = {
x + y
}
// 函数字面量语法
// 相对于使用def来说:它:
// 1.省略了返回值类型
// 2.省略了函数名,现在就是变量名
// 3.多了一个=>
val sum2 = (x:Int,y:Int) => {x + y}
def main(args: Array[String]): Unit = {
println(sum1(10,20))
println(sum2(10,20))
}
}
二、部分应用函数
定义一个接收函数作为参数的函数def a(f:()=>Unit)={},其中函数的类型()=>Unit部分()为函数的参数,Unit为函数的返回值。通过定义字面量传递值时,字面量必须和函数的类型匹配。
/*
部分应用函数
*/
// 定义一个函数,它用来计算三个整数的和
// def sum1(a:Int,b:Int,c:Int):Int = {
// a+b+c
// }
val sum2 = (a:Int,b:Int,c:Int) => a+b+c
def main(args: Array[String]): Unit = {
// println(sum1(10,20,30))
// 如果参数给的不够,会报错!
// println(sum2(10,20))
val r=sum2(10,20, _) // _表示一个占位符:现在还不知道具体是什么
// r就是部分应用函数!对sum2来说,它只有一部分参数
println(r(50))
val r1=sum2(_,20,_)
println(r1(10,30))
}
}