10.10Scala的高阶函数

(一)什么是高阶函数

高阶函数:是一个特殊的函数,特殊之处在于:它指使用其他函数作为参数或者返回值。

object Test14 {
  def main(args: Array[String]): Unit = {
    //高阶函数
    var f = (x:Int) => {
      val fn = (y:Int) => x * y
      fn
    }
    val rs = f(10)
    println(rs(20))
  }

}

(二)map函数

map(映射)

def main(args: Array[String]): Unit = {
  //定义一个数组 Array
  val arr1 = Array(1,2,3,4,5,6)
  //输出5
  println(arr1(4))
  //2.map函数 映射 给我一个值,我给你变成另一个值 y = x * 2
  //map函数需要一个额外的函数作为参数,所以它是一个高阶函数
  val arr2 = arr1.map(x => x * 2)
  for (i <- arr2) {
    println(i)
  }
}

(三)foreach函数

  def main(args: Array[String]): Unit = {
    //foreach  对数组的每一个元素都去执行一次函数
    //          它与map的区别在于:没有返回值!!
//    var fn = (x:Int) => {
//      println(s"$x ----- ")
//    }
    //Array(-1,2,-3,-4).foreach(fn)
    Array(-1,2,-3,-4).foreach(println)
  }

(四)filter函数

  def main(args: Array[String]): Unit = {
    //filter 过滤:对每一个元素执行函数,如果返回true,就把该元素留下。返回一个新的数组
    //Array(1,2,3,4,5) --只要偶数-> Array(2,4)
    //var re = Array(1,2,3,4,5).filter(x => if(x%2==0) true else false)
    var re = Array(1,2,3,4,5).filter(x => x%2==0)
    re.foreach(println)
  }

(五)flatten函数

object Testflatten {
  def main(args: Array[String]): Unit = {
    //二维数组
    //var arr1 = Array(30,40,50)
    //println(arr1(0))
    //二维数组:3个同学,3门课的成绩
    var arr1 = Array(
      Array(11,52,83),
      Array(12,62,93),
      Array(13,72,3),
    )
    //打印52
    println(arr1(0)(1))
    //打印93
    //println(arr1(1)(2))
    println(arr1.flatten.sum)
  }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值