函数进阶

16 阅读1分钟

函数的字面量语法:看起来就像给函数赋值

要点

特殊写法

  • 函数只有一句代码,可省略{}
  • 如果参数只使用来一次,那可以用_来代替 加上参数类型
object Base51 {
  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)}")


    }
}

把函数作为参数

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

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

把函数作为返回值

scala 的函数的闭包