函数的字面量语法
函数字面量语法,另一种定义函数的方式
语法
语法:var 变量 = (参数列表)=>{方法体}
它省略了def,函数名以及函数的返回值类型。
object z30 {
/*
* 函数字面量语法,另一种定义函数的方式
*/
//定义一个函数,求两个数的和
def sum1(x:Int,y:Int):Int = {
x + y
}
/*
* 函数字面量语法d的简化写法
* 1.函数体只有一句,可以省略{}
* 2.参数只用一个,可以用_代替参数名。指定类型。
*/
var sum2 = (x:Int,y:Int) => { x+y }
def main(args: Array[String]): Unit= {
println(sum1(10, 20))
println(sum2(10, 20))
}
}
[简化写法]
Scala的函数字面量的简化方式有两种方式:
第一种方式为:_(占位符)。如果函数中的参数在方法体中只使用了一次,可以用_替换。
第二种方式为:只有一个表达式时,可以省略括号。
object z31 {
/**
* 函数字面量语法的简化写法
* 1. 函数体只有一句,可以省略 { }
* 2. 参数只用一次,可以用_代替参数名。指定类型。
*/
val sum1 = (x: Int, y: Int) => {x + y}
val sum2 = (x: Int, y: Int) => x + y
val sum3: (Int,Int) => Int = _ + _
def main(args: Array[String]): Unit = {
println(sum1(10, 20))
println(sum2(10, 20))
println(sum3(10, 20))
}
}
部分应用函数
如果一个函数包含多个参数,对该函数传递部分参数使得这个函数返回一个函数,那么这种函数叫做部分应用函数。
object z32 {
/**
* 部分应用函数
*/
// 定义一个函数,它用来计算三个整数的和
// 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))
}
}