函数进阶

42 阅读1分钟

1.定义一个函数,计算两数的和

//定义一个函数,计算两数的和
def sum(x:Int, y: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)}")

}

2.把函数作为参数

//定义一个函数,计算两数的和

//定义一个字面量函数,计算两个数的较大者
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)
}

3.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,_)
  var rst1 = f(5)
  println(rst)
  println(rst1)

}