高阶函数

20 阅读1分钟
object hai34 {
  def main(args: Array[String]): Unit = {
    val arr = Array(1,2,3,4,5)
   var rst = arr.reduce((x,y) => x + y)
    println(s"rst = ${rst}")
  }
}
object hai35 {
  def main(args: Array[String]): Unit = {
    //定义一个数组
    val arr = Array(-1,2,30,5)
    //求最大值
   //val rst = arr.reduce((x,y) => if(x > y)x else  y)
    //求最小值
   var rst = arr.reduce((x,y) => if(x < y)x else  y)
    println(s"rst = ${rst}")
  }
}
bject hai36 {
  def main(args: Array[String]): Unit = {
    //定义一个数组
    val arr = Array(1,2,3,4,5)
   val rst = arr.reduceLeft((x,y) => x - y)
   val arr1 = arr.reduceRight((x,y) => x - y)
    println(s"rst = ${rst}")
    println(s"arr1 = ${arr1}")


  }
}
  • fold是一种集合操作 返回一个单一的操作 需要提供一个初始
object hai37 {
  def main(args: Array[String]): Unit = {
    //定义一个数组
    val arr = Array(1,2,3,4)
   val rst = arr.fold(10)((x,y) => x + y)

    println(s"rst = ${rst}")


  }
}
 
object hai38 {
  def main(args: Array[String]): Unit = {
    //定义一个数组
//从小到大排序
   Array(-1,20,-100,3,40).sorted.foreach(println)
//按照字典排序
   Array("zip","aim","ban","fei","yes").sorted.foreach(println)
    
  }
}
  • 对数值大小进行排序,按照离0点距离大小进行排序
  • sortwith((x,y) => 布尔值)
  • true:x应该排在y的前面
  • false:x要排在y的后面
object hai39 {
  def main(args: Array[String]): Unit = {
    //对数值进行排序 按照离0点距离大小进行排序
  Array(-1,2,0,4,9).sortWith((x,y)=> Math.abs(x - 0) < Math.abs(y-0)).foreach(println)
  }
}