高阶函数(1)

66 阅读2分钟

主要内容:

1. 什么是高阶函数?

2. map的作用是?

3. foreach的作用是?

4. filter的作用是?

(一)高阶函数

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

Scala的常见高阶函数包括Array.map、flatten、flatmap、foreach、reduce、filter和fold等。

(二)map函数

任务:把数组(1,2,3,4,5) → (2,4,6,8,10)

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

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

val arr1 = Array(1,2,3,4,5,6)  
val arr2 = arr1.map(x=>x*2)  
for(i <- arr2){  
  println(i)  
}

(四)foreach函数

任务: 打印数组中的元素

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

[讲] 语法:数组.foreach(元素=>{}

arr2.foreach(println)

(五)filter函数****

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

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

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

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

object base047 {
  /**
   *  filter
   *  过滤器
   *  filter(函数)
   *  如果函数的返回值为true,则元素就保留下来
   **/


  def main(args: Array[String]): Unit = {
    // 把数值为偶数的保留下来
    val arr1 = Array(1,2,3,4,5)
//    val arr2=arr1.filter(x=> {
//      //print(x)
//      x%2 == 0
//    })
    val arr2=arr1.filter( x=> x%2==0 )
    arr2.foreach(println)

    val score= Array(90,98,60,49,100)
    // 把小于80分的值去掉,只保留大于80分的分数
    var score1=score . filter(x=> x>80).foreach(println)
  }
}

运行结果如下:

屏幕截图 2025-10-27 151154.png