函数进阶

31 阅读1分钟

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)
   }
}