高阶函数

76 阅读2分钟

高阶函数:是一种特殊的函数,特殊之处在于:它指使用其他函数作为参数或者返回值。

(一)map函数

作用:通过对数组的每一个元素应用一个函数来构建一个新数组

语法: 新数组 = 旧数组.map(旧元素=>新元素)

object ddd31 {
  def main(args: Array[String]): Unit = {
    val arr = Array(1,2,3,4,5)
    val fn = (x:Int) => x * 2 // fn 是一个字面里函数
    val arr1 = arr.map( fn ) // map是一个高阶函数,因为它的参数类型是 函数!
    // 用for循环输出
    for(i <- arr1) {
      println(i)
    }
  }
}
把(1,2,3,4,5)——> (1,4,9,16,25)
object ddd31 {
  def main(args: Array[String]): Unit = {
    val arr = Array(-1,2,-3,4)
    val arr1 = arr.map(x => x*x)
    for(i <- arr1) {
      println(i)
    }
  }
}
把(-1,2,-3,4)——> (1,2,3,4)
object ddd31 {
  def main(args: Array[String]): Unit = {
    val arr = Array(-1,2,-3,4)
    val arr1 = arr.map(x => if(x>0) x else -x)
    for(i <- arr1) {
      println(i)
    }
  }
}

(二)filter 函数

作用:对数组元素使用函数进行过滤。

语法:新数组= 旧数组.filter(元素=>bool)  它的参数是一个函数,这函数的返回值是布尔值。如果返回为true就保留。

object ddd32 {
  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)
  }
}

(三)reduce函数

作用:reduce 是一种集合操作,用于对集合中的元素进行聚合操作,返回一个单一的结果。它通过指定的二元操作(即取两个元素进行操作)对集合中的所有元素进行递归处理,并最终将其合并为一个值

语法:reduce 函数需要一个函数作为参数,这个函数接受两个相同类型的参数,并返回一个值。

计算最大,最小值
object ddd35 {

  def main(args: Array[String]): Unit = {
    var arr = Array(-1, 20, 30, 14)
    // 求最大值
    val max = arr.reduce((x,y) => if (x > y) x else y)
    println(max) //
    // 求最小值
    val min = arr.reduce((x, y) => if (x < y) x else y)
    println(min) //
  }
}