高阶函数

16 阅读1分钟

什么是高阶函数

高阶函数:是一种特殊的函数,特殊之处在于:它指使用其他函数作为参数或者返回值。 Scala的常见高阶函数包括:Array.map、flatten、flatmap、foreach、reduce、filter和fold等。

object Sc47 {
  /**
   * 数组
   */

  def main(args: Array[String]): Unit = {
    val arr = Array(1,2,3,4,5)

    val fn = (x:Int) => x * 2

    val arr1 = arr.map(fn)

    for(i <- arr1) {
      println(i)
    }
  }
}

mpa函数

object Sc48 {
  /**
   * 数组
   */

  def main(args: Array[String]): Unit = {
    val arr = Array(-1,-2,-3,-4,-5)

    val arr1 = arr.map(x => x.abs)

    for(i <- arr1) {
      println(i)
    }
  }
}

foreach函数

object Sc49 {
  /**
   * 数组
   */

  def main(args: Array[String]): Unit = {
    val arr = Array(-1,-2,-3,-4,-5)
    arr.foreach(x => { println(x) })
    arr.foreach(println)
    }
  }

filter函数

任务:在数组中找出元素是偶数的,并组成新数组。(1,2,3,4,5) → (2,4)

object Sc49 {
  /**
   * 数组
   */

  def main(args: Array[String]): Unit = {
    val arr = Array(1,2,3,4,5)
    val arr1 = arr.filter(x => x%2 == 0)
    arr1.foreach(println)
    }
}

flatten函数

作用:将二维数组中的元素展平至单数组中

语法:二维数组.flatten。不需要写()

object Sc50 {
  /**
   * 数组
   */

  def main(args: Array[String]): Unit = {
    val arr1 = Array(   Array(1,2,3),       Array(4,5,6));
    arr1(0).foreach(println)
    println(arr1(0)(0))
    var arr2 = arr1.flatten
    arr2.foreach(println)
    }
}