函数进阶

112 阅读1分钟

一.函数的字面量语法

  1. 定义:看起来就像给变量赋值
  2. 要点:有一个箭头符号(=>)。省略def,省略了返回值类型
val sum1 = (x:Int,y:Int) => {x + y}
def main(array: Array[String]): Unit = {
  val a= 2
  val n = 5
  println(s"$a + $n = ${sum1(a,n)}")
}
(一)特殊写法--简写
  1. 函数只有一句代码,可以省略{}
  2. 如果参数只使用一次,那么可以用_来代替。要加上参数的类型
val sum2 = (x:Int,y:Int) => x + y
val sum3:(Int,Int) => Int = {_ + _}
val sum4 = (_:Int) + (_:Int)
def main(array: 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)}")
}

二.定义函数

  1. 求取两数最小值和两数最大值
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(array: Array[String]): Unit = {
  test(getMax,1,2)
}

三.Scala部分应用函数

  1. 定义:如果一个函数包含多个参数,对该函数传递部分参数使得这个函数返回一个函数,那么这种函数叫做部分函数。
  2. 部分应用函数,在调用函数的时候,只传入一部分参数
val mul = (a:Int,b:Int,c:Int) => a*b*c
def main(array: Array[String]): Unit = {
  val rst = mul(2,3,4)
  val f = mul(2,3,_)//第三个参数传入一个_,表示:这个参数先空着,也不能返回最后的计算结果。它的返回值是一个函数,部分应用函数
  var rst1 = f(5)
  println(rst)
  println(rst1)
}