进阶函数

41 阅读1分钟

定义一个函数,计算2个数的和

要点:

 1. 有一个箭头符号 =>
 2. 省略def,省略了返回值类型
 特殊的写法-简写
 1. 函数体只有一行代码,可以省略 {}
 2. 如果参数只使用了一次,那么可以用 _ 来代替。要加上参数的类型
object w07 {
  //定义一个函数,计算2个数的和
  def sum(x: Int, y: Int): Int = {
    x + y
  }
  //字面量语法:看起来就像给变量复值
  val sum1 = (x: Int, y: Int) => x + 

    val sum2 = (x:Int, y:Int) => x + y
    val sum3: (Int,Int) => Int = { _ + _ }
    val sum6 = (_:Int) + (_:Int)

    def main(args: Array[String]): Unit = {
      val a = 2
      val n = 5
      println(s"a = $a, n = $n, sum2(a, n) = ${sum2(a, n)}")
      println(s"a = $a, n = $n, sum3(a, n) = ${sum3(a, n)}")
      println(s"a = $a, n = $n, sum6(a, n) = ${sum6(a, n)}")
    }

}

求a的n次方

object w08 {
  def power(a: Double, n: Int): Double = {
    if (n == 0) 1
    else if (n > 0) a * power(a, n - 1)
    else 1 / power(a, -n)
  }
  def main(args: Array[String]): Unit = {
    println(power(2, 3)) // 8.0
    println(power(5, -2)) // 0.04
    println(power(2, 0)) // 1.0
  }
}

把函数作为参数

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