一.函数的字面量语法
1.它省略了def,函数名以及函数的返回值类型。
2.字变量语法,看起来就像给变量赋值
3.有一个箭头符号
object Base49 {
def sum(x:Int,y:Int):Int={
x+y
}
//字变量语法,看起来就像给变量赋值
//val a =1
val sum1=(x:Int,y:Int)=>{x+y}
def main(args:Array[String]):Unit={
val a=2
val n=5
println(s"$a+$n=${sum1( a,n)}")
}
}
4.特殊写法(简写):①.函数只有一句代码,可以省略{};②如果参数只使用了一次,那么可以使用_来代替,要加上参数的类型
object Base50 {
def sum(x:Int,y:Int):Int={
x+y
}
//字变量语法,看起来就像给变量赋值
//val a =1
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)}")
}
}
二.把函数作为参数
定义一个接收函数作为参数的函数def a(f:()=>Unit)={},其中函数的类型()=>Unit部分()为函数的参数,Unit为函数的返回值。通过定义字面量传递值时,字面量必须和函数的类型匹配。
eg:
object Base51 {
val getMax=(x:Int,y:Int) =>if(x>y)x else y
val getMin=(x:Int,y:Int) =>if(x>y)x else y
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)
}
}
三.Scala部分应用函数
如果一个函数包含多个参数,对该函数传递部分参数使得这个函数返回一个函数,那么这种函数叫做部分应用函数。
object Base53 {
//部分应用函数,在调用函数的时候,只传入一部分参数
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,_)
var rst1=f(5)
println(rst)
println(rst1)
}
}