高阶函数

37 阅读2分钟

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

object Base54 {
  /**
   * 数组
   * @param args
   */
  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 <- arr ) {
      println(i)
    }
  }
}

(-1,2,-3,-4)---->(1,2,3,4)

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

foreach函数

object Base54 {
  /**
   * 数组
   * @param args
   */
  def main(args: Array[String]): Unit = {
    val arr = Array(-1,2,-3,-4,5)
//  arr.foreach(x => {println(x)})
    arr.foreach(println)
  }
}

取偶数

object Base54 {
  /**
   * 数组
   * @param args
   * 1 把数组中的偶数保留下来,组成新数组
   * filter : 过滤
   * filter(函数fn),如果fn的返回值是true,就保留这个元素
   */
  def main(args: Array[String]): Unit = {
    val arr = Array(1,2,3,4,5)
//  x%2 == 0 用来判断是否为偶数
    val arr1 = arr.filter(x => x%2 == 0)
    //打印新数组
    arr.foreach(println)
  }
}

保留及格的分数

object Base54 {
  /**
   * 数组
   * @param args
   * 1 把数组中的偶数保留下来,组成新数组
   * filter : 过滤
   * filter(函数fn),如果fn的返回值是true,就保留这个元素
   */
  def main(args: Array[String]): Unit = {
    val arr = Array(60,58,70,80).filter(x => x >= 60)
//  x%2 == 0 用来判断是否为偶数
//    val arr1 = arr.filter(x => x%2 == 0)
    //打印新数组
    arr.foreach(println)
  }
}

flatten 不要加()的函数

object Base54 {
  /**
   * 二维数组
   * flatten 不要加()的函数
   */
  def main(args: Array[String]): Unit = {
    var arr1 = Array( Array(1,2,3),Array(4,5,6));
//    arr1(0).foreach(println)
    println(arr1(0)(0))
    val arr2 = arr1.flatten
    arr2.foreach(println)
  }
}

reduce: 聚合

object Base55 {
  /**
   * reduce: 聚合
   */
  def main(args: Array[String]): Unit = {
    var arr = Array( 1,2,3,4,5)
    var sum = arr.reduce((x,y) => x + y)
    println(sum)
  }
}

屏幕截图 2025-10-22 104425.png

object Base55 {
  /**
   * reduce: 聚合
   */
  def main(args: Array[String]): Unit = {
    var arr = Array(-1,20,30,14)
    //求最大值
    var 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)
  }
}

fold:带初值的reduce

object Base55 {
  /**
   * fold:带初值的reduce
   */
  def main(args: Array[String]): Unit = {
    var arr = Array(1,2,3)
    //求和
//    var sum = arr.reduce((x,y) => x + y)
    var sum1 = arr.fold(100)((x,y)=>x+y)//106
    println(sum1)
  }
}
object Base56 {
  /**
   * fold:带初值的reduce
   */
  def main(args: Array[String]): Unit = {
    var arr = Array(-1,20,3,2,50)
    //排序
    var arr1 = arr.sorted//对于数组类型的数据,从小到大升序排列
    var arr2 = Array("banana","zip","b","a","apple")
    //排序
    var arr3 = arr.sorted//对于字符类型的数据,按照字母表的顺序排列
    arr3.foreach(println)
  }
}