Scala的高阶函数(1)

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

(1)map函数:

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

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

例题:把arr中每个元素变成自己的两倍,并且返回一个新的数组

代码:

scale
 体验AI代码助手
 代码解读
复制代码
object basic48 {
  def main(args: Array[String]): Unit = {
    val arr = Array(1,2,3,4)

    val fn = (x:Int) => x*2
// Array表示元祖,map是它的方法
// map是高阶函数,它的参数是一个函数
    val arr1 = arr.map(fn)

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

结果:

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

练习1:

把(1,2,3,4,5) → (1,4,9,16,25)

代码:

ini
 体验AI代码助手
 代码解读
复制代码
object basic48 {
  def main(args: Array[String]): Unit = {
val abb = Array(1,2,3,4,5)
val abb1 =abb.map(x => x*x)
    for (b <-abb1){
      println(b)
    }

结果:

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

练习2:

把(-1,2,-3,-4) → (1,2,3,4)

scss
 体验AI代码助手
 代码解读
复制代码
object basic48 {
  def main(args: Array[String]): Unit = {
    //val arr =Array(1,2,3,4)
    //    val arr1=arr.map(x => x*2)
    //    for (i <- arr1){
    //      println(i)
    //    }

//
//    val abb = Array(1, 2, 3, 4, 5)
//    val abb1 = abb.map(x => x * x)
//    for (b <- abb1) {
//      println(b)
//    }


    val acc =Array(-1,-2,-3,-4)
    val acc1 =acc.map(x => if (x >= 0) x else -x)
        for (c <- acc1){
    println(c)
  }
  }
}

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

(2)foreach函数:

作用:对数组的每一个元素应用函数。

语法:数组.foreach(元素=>{})

例题:

打印数组中的元素

代码:

ini
 体验AI代码助手
 代码解读
复制代码
object basic49 {
  def main(args: Array[String]): Unit = {
    val arr =Array(-1,2,-3,-4,5)
    arr.foreach(println)
  }
}

结果:

image.png

(3)filter函数

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

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

例题;

在数组中找出元素是偶数的,并组成新数组。

代码:

ini
 体验AI代码助手
 代码解读
复制代码
object basic50 {
 def main(args: Array[String]): Unit = {
   val arr =Array(0,2,3,4,5)

   var arr1 =arr.filter(x => x%2 ==0)

   arr1.foreach(println)
 }
}

结果:

image.png image.png

练习1

去掉不及格的分数:(60,59,80,70) → (60,80,70)

代码:

ini
 体验AI代码助手
 代码解读
复制代码
object basic1 {
  def main(args: Array[String]): Unit = {
    val arr = Array(60,59,80,70)
    var arr1 = arr.filter(x => x >= 60)

    arr1.foreach(println)

  }


}

结果:

image.png

(4)flatten函数

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

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

练习:

任务:对成绩(100,51,55,67,59,89)进行处理,如果分数在56-59之间,就设置为60分,得到的新成绩为(100,51,55,67,60,89)

代码:

ini
 体验AI代码助手
 代码解读
复制代码
object basic51 {
  def main(args: Array[String]): Unit = {
    val arr = Array(100, 51, 55, 67, 59, 89)

    val arr1 = arr.map(arr => if (arr >= 56 && arr <=59) 60 else arr)
    arr1.foreach(println)
  }
}

结果:

image.png