高阶函数

43 阅读2分钟

1map函数.

map:映射。把一个元素改成另一个函数 作用:通过对数组的每一个元素应用一个函数来构建一个新数组。

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

案例1:数组(1,2,3,4)变为(2,4,6,8)

object basic46 {
  def main(args: Array[String]): Unit = {
    //定义一个数组
     val arr=Array(1,2,3,4)
    //把arr中的每个元素都变成自己的两倍,并返回一个新的数组?
    val fn=(x:Int)=>x*2

    //Array表示数组,map就是他的方法
    //map就是一个高阶函数,它的参数是一个函数

    val arr1=arr.map(fn)

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

image.png

案例2:数组中的数取绝对值

object basic48 {
  def main(args: Array[String]): Unit = {
    //定义一个数组
    val arr=Array(-1,2,-3,-4)
    val fn=(x:Int)=>if(x>=0)x else -x//x的绝对值

    //Array表示数组,map就是他的方法
    //map就是一个高阶函数,它的参数是一个函数

    val arr1=arr.map(fn)

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

image.png

2.foreach函数

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

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

object basic49 {
  def main(args: Array[String]): Unit = {
    //定义一个数组
    val arr = Array(-1, 2, -3, -4,5)


    //arr.foreach(x=>{
    // print(x)})
    arr.foreach(println)
  }
}

3.filter函数

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

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

object basic51 {
  def main(args: Array[String]): Unit = {
    //定义一个数组
    val arr = Array(60, 59, 80,70)


    //只保留arr中的偶数,并存放在一个新的数组中
    //filter的参数是一个函数
    //如果这个函数有返回ture,则当前元素会保留下来
    var arr1=arr.filter(x => x>=60)
    arr1.foreach(println)
  }
}

image.png

object basic52 {
  def main(args: Array[String]): Unit = {
    //定义一个数组
    val arr = Array(100,51,55,67,59,89)

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

image.png