高阶函数

28 阅读1分钟

定义一个字面量函数

object inout59 {
  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)
    }
  }
}

匿名函数

object inout59 {
  def main(args: Array[String]): Unit = {
    val arr = Array(1,2,3,4,5)

    val arr1 = arr.map(x=>x*2)

    for(i<-arr1){
      println(i)
    }
  }
}
object inout59 {
  def main(args: Array[String]): Unit = {
    val arr = Array(-1,2,-3,-4,5)

    val arr1 = arr.map(x=>if(x>0) x else -x)

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

数组

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

reduce函数需要一个函数作为参数,这个函数接受两个相同类型的参数,并返回一个值

object inout62 {
  def main(args: Array[String]): Unit = {
    var arr = Array(1,2,3,4,5)

    var sum = arr.reduce((x,y) => x + y)

    println(sum)
  }
}

fold:带初值的reduce

object inout63 {
  def main(args: Array[String]): Unit = {
    var arr = Array(-1,20,30,14)
    val max = arr.reduce((x,y)=>if(x>y)x else y)
    println(max)

    val min = arr.reduce( )
    println(min)
  }
}

排序

object inout63 {
  def main(args: Array[String]): Unit = {
    var arr = Array(-1,20,30,14)
    val max = arr.reduce((x,y)=>if(x>y)x else y)
    println(max)

    val min = arr.reduce( )
    println(min)
  }
}

sortWith函数

object inout66 {
  def main(args: Array[String]): Unit = {
    var arr = Array(-1,0,1,3,2)
    var arr1 = arr.sortWith((a,b)=> Math.abs(a-3) < Math.abs(b-3))
    arr1.foreach(println)
  }
}