高阶函数

19 阅读1分钟
object bais01 {
  def main(args: Array[String]): Unit = {
    val arr = Array(1,2,3,4,5)
    val rst = arr.reduce( (x,y) => x * y)
    println(s"rst = ${rst}")
  }
}

求最大(小)值

object bais01 {
  def main(args: Array[String]): Unit = {
    val arr = Array(-1,2,30,5)
    //求最大值
    val rst_max = arr.reduce( (x,y) => if(x > y) x else y)
    // 求最小值
    val rst_min = arr.reduce( (x,y) => if(x < y) x else y)
    
    println(s"rst = ${rst_max}")

    println(s"rst = ${rst_min}")
  }
}
object bais01 {
  def main(args: Array[String]): Unit = {
    val arr = Array(1,2,3,4)
    // reduce ==== reduceLeft
    // val rst = arr.reduceLeft((x,y) => x - y)
    val rst = arr.reduceRight((x,y) => x - y)
    println(s"rst = ${rst}")
  }
}
object bais01 {
  def main(args: Array[String]): Unit = {
    val arr = Array(1,2,3,4)
    // reduce ==== reduceLeft
    // val rst = arr.reduceLeft((x,y) => x - y)
    val rst = arr.fold(10)((x,y) => x + y)
    println(s"rst = ${rst}")
  }
}

对数值进行排序:从小到大 对字符排序:按照字典顺序

object bais01 {
  def main(args: Array[String]): Unit = {
    //对数值进行排序:从小到大
    Array(-1,20,-100,3,40)
    //对字符排序:按照字典顺序
    Array("zip","bus","apple","banana","card").sorted.foreach(println)
  }
}

对数值进行排序:距离0点的距离大小进行排序

object bais01 {
  def main(args: Array[String]): Unit = {
    //对数值进行排序:距离0点的距离大小进行排序
    // sortWith((x,y) => 布尔值)
    //    true: x 应该要排在y的前面
    //    false: x要排在y的后面
    Array(-1,2,0,4,9).sortWith((x,y) => Math.abs(x-0) < Math.abs(y-0)).foreach(println)
  }
}