高阶函数

22 阅读1分钟

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

  • fn 是一个字面里函数
  • map 是一个高阶函数,因为它的参数类型是 函数
object Base54 {
  def main(args: Array[String]): Unit = {
    val arr = Array(1,2,3,4,5)
    val fn = (x:Int) => x * 2
    val arr1 = arr.map(fn)

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

}
}
  • 没有必要去单独定义一个函数fn,这里直接写在map函数内,此时,它就是一个匿名函数
object Base54 {
  def main(args: Array[String]): Unit = {
    val arr = Array(1,2,3,4,5)
//    val fn = (x:Int) => x * 2
//    val arr1 = arr.map(fn)
//
    val arr1 = arr.map(x => x * 2)
      for(i <- arr1){
      println(i)
  }

}
}

#把-1 2 -3 -4改为1 2 3 4

object Base55 {
  def main(args: Array[String]): Unit = {
    val arr = Array(-1,2,-3,-4)
//    val fn = (x:Int) => x * 2
//    val arr1 = arr.map(fn)
//
    val arr1 = arr.map(x => if(x>0) x else -x  )
      for(i <- arr1){
      println(i)
  }

}
}

foreach :依次使用当前的函数来处理数组中的每一个元素

object Base56 {
  def main(args: Array[String]): Unit = {
    val arr = Array(-1,2,-3,-4,5)
    arr.foreach(println)


}
}
  • 把数组中的偶数保留下来,组成新数组
object Base56 {
  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)
}
}
  • 去掉不及格的分数
object Base57 {
  def main(args: Array[String]): Unit = {
    val arr = Array(60,59,80,70,57)
    val arr1 = arr.filter(x => x >= 60)
    arr1.foreach(println)
}
}

flatten 不要加()的函数

object Base58 {
  def main(args: Array[String]): Unit = {
    val arr1 = Array(Array(1,2,3),  Array(4,5,6));
    println(arr1(0)(0))
    val arr2 = arr1.flatten
    arr2.foreach(println)
}
}