Scala的高阶函数

1.高阶函数的定义:使用其他函数作为参数或者返回一个函数作为结果的函数。

2.map和foreach函数的应用

   ①.map:返回值构建一个新的数组通过应用函数遍历数组中的每一个元素。

        语法:def  map[B] (f: (T)=>B) (implicit  ct:ClassTag[B]):Array[B]

   ②.foreach:在每个元素上执行指定的程序。

        语法:def  foreach[U] (f:(T)=>U):Unit

   ③.两者差别之处:foreach没有返回值,map有返回值。

3.map应用的实例如下:

def main(args: Array[String]): Unit = {
    //学习一些常见的高阶函数(与数组,列表相关的)的用法
    //Array:数组
    var arr=Array(1,2,3,4,5)
    //arr就是一个数组
   //(1)map
    //作用:通过对数组的每一个元素应用一个函数来构建一个新数组
   //格式:新数组= arr.map(函数,接收一个元素,返回一个值)
    val fn =(x:Int) => 2*x //字面量格式定义函数
    var arr1=arr.map(fn) // map是一个高阶函数,因为它的参数是一个函数
      var arr1=arr.map((x:Int) => 2*x)//map是一个高阶函数,因为它的参数是一个函数
      for (i <- arr) {
       println(i)
    }


    //把(1,2,3,4,5)->(1,4,9,16,25)
    var arr1 =arr.map((x:Int) =>x*x)
    for (i <- arr1) {
            println(i)
          }
    //把(-1,2,-3,-4)->(1,2,3,4)
    var arr1=Array(-1,2,-3,-4)
    var arr2=arr1.map((y:Int) => if (y>0) y else -1*y)
       for (i <- arr2) {
          println(i)
     }

4.foreach应用的实例如下:

//foreach没有返回值
    //foreach的作用,对数组的的每一个元素都执行一次函数,没有返回值
    var fn=(x:Int) =>{
     println(x)
   }
    var arr1=arr.foreach(fn)
    //println:就是一个函数
    var arr=Array(-1,2,-3,-4)
    arr.foreach(println)

5.filter函数的应用

   语法:def  filter (p:(T)=>Boolean): Array[T]

    作用:过滤数组中的元素。

    filter函数的实例如下:

var arr=Array(60,59,80,70)
//任务,去掉不及格的数
    var arr1 =arr.filter((x:Int)=>x>=60)
    arr1.foreach(println)

6.flatten函数的应用

   作用:将二维函数组中的元素展平至单数组中。

   语法:def  flatten [B] (implicit  asIterable:  (T)  => collection.IterableOnce[B] , m: ClassTag[B] :Array[B])

    flatten函数应用的实例如下:

//flatten展平
    var arr=Array(
      Array(60,90,99),
      Array(61,91,99),
      Array(62,92,99),
      Array(63,93,99),
    )//4个人,每个人都有3门课的成绩
    var arr1=arr.flatten
    println(arr1.sum)
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值