scala 进阶 函数

32 阅读1分钟

函数字面量语法,另一种定义函数的方式

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

2.相对使用def来说,它:

2.1 省略了返回值类型 2.2 省略了函数名 2.3 多一个 =>

object base37 {
 
    // 定义一个函数,求两个数的和
    def sum1(x:Int,y:Int):Int={
      x+y
    }
//  函数字面量语法
    val sum2=(x:Int,y:Int)=>{x+y}
  def main(args: Array[String]): Unit = {
    println(sum1(10,20))
    println(sum2(10,20))

  }
}

函数字面量语法d的简化写法

1.函数体只有一句,可以省略{}

2, 函数只能用一次,可以用_代替参数名。指定类型

object base38 {
  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))

  }
}

部分应用函数

1.作用:定义一个函数,它用来计算三个整数的和

2.注意事项:如果参数给的不全,会报错!

object base39 {
    // 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(sum2(10, 20, 30))
      // println(sum2(10, 20))
      val r = sum2(10,20, _)
      // 表示一个占位符:现在还不知道具体是什么
      // 部分应用函数!对sum2来说,它只有一部分参数
      println(r(50))

      val r1 = sum2(_, 20, _)
      println(r1(10, 30))
    }
  }