函数的字面量语法

49 阅读1分钟

要点

  1. 这是除了使用def之外,定义函数的另一种方式。
  2. 语法:var 变量 = (参数列表)=>{方法体}
  3. 它省略了def,函数名以及函数的返回值类型。

基本案例一

/**
 * 函数字面语法,另一种定义函数的方式
 *
 */
//定义一个函数,求两个数的和
def sum1(x: Int, y: Int): Int = {
  x + y
}

//函数字面语法
//相对于使用def来说,它:
//1. 省略了返回值
//2. 省略了函数名,现在就是变量名
//3. 多了一个 =>
val sum2 = (x: Int, y: Int) =>{ x + y}

def main(args: Array[String]): Unit =
  println(sum1(10, 20))
  println(sum2(10, 20))

基本案例二

/**
 * 函数字面量
 *
 */
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))
}

部分应用函数

  /**
   * 部分应用函数
   *
   */
  //定义一个函数,它用来计算三个数的和
//  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(sum1(10,20,30))
    //如果参数给的不够,会报错!
    //println(sum2(10,20))
    val r=sum2(10,20,_)  // _ 表示一个占位符:现在还不知道具体作用是什么
    // r 就是部分应用函数
    println(r(50))

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