Scala -scala进阶- 高阶函数的初次体验

目录

 

高阶函数

1、高阶函数的定义

2、常见的高阶函数

3、常见高阶函数的代码示例

3.1、filter函数

3.2、foreach函数

3.3、map函数

3.4 reduce函数

3.5 flatMap函数

3.6 flatten 函数


高阶函数

1、高阶函数的定义

定义:如果一个函数的传入参数为函数或者返回值是函数,则该函数即为高阶函数

一般高阶函数的类型有:
 1、传入参数为函数
 2、传入参数为匿名函数
 3、传入参数为方法
 4、传入参数为方法(方法自动转换成函数)

2、常见的高阶函数

-filter、foreach
-map、reduce
-flatMap、map、flatten
-paritition、groupby
-sorted

3、常见高阶函数的代码示例

3.1、filter函数

#1、格式

def filter(p: Int => Boolean): List[Int]

#2、功能:其实就是过滤掉false的输入参数,保留返回true的数

#3、展示如下:

3.2、foreach函数

#1、格式

foreach[U](f: Int => U): Unit

#2、功能:其实就是集合遍历

#3、展示如下:

3.3、map函数

#1、格式

def map[B](f: Int => B): scala.collection.TraversableOnce[B]

#2、功能:

   a ) :map 是对每一个元素进行处理并返回一个新的集合,

   b ) : 一对一映射  也就是对原来的集合中的每一个元素,执行某一项操作(该操作取决于函数的内容)比如flatMap中的map

#4、展示如下:

package com.scala.day02

object MapDemo {
  def main(args: Array[String]): Unit = {
    val arr= (1 to 10).toArray
    val result = arr.map(x=>{if(x%2==0) x*2 else 0}).filter(x=>x>0)
    result.foreach(x=>println(x))

  }

}

3.4 reduce函数

#1、格式

def reduce[A1 >: Int](op: (A1, A1) => A1): A1

#2、功能:以对集合当中的元素进行归约操作,sum操作中的foldLeft,sum实际上调用的就是foldLeft

#3、展示如下:

集合元素为元组:

简写:注意:下划线占位符,一次对应一个参数

3.5 flatMap函数

注意:

  1、其实flatMap = map + flatten(flaten对输入元素要求是Array )

  2、先执行map再执行flatten

#1、格式

def flatMap[B](f: String => scala.collection.GenTraversableOnce[B]): scala.collection.TraversableOnce[B]

#2、功能:对每个输入元素返回一个集合(注意:要求参数为函数,并且函数中的参数类型为String)

#3、展示如下:

3.6 flatten 函数

注意:

  1、fatten对输入元素要求是Array

  2、map函数说明:一对一映射  也就是对原来的集合中的每一个元素,执行某一项操作(该操作取决于函数的内容)

#1、格式:

def flatten[B](implicit asTraversable: Array[String] => scala.collection.GenTraversableOnce[B]): List[B]

#2、功能:就是将多个集合展开,组合成新的一个集合(可能不太准),也有的说是压平

#3、展示如下:

3.7、partition函数

  注:

   1、只有一个参数,可以省略参数定义,使用_代替

   2、高阶函数中下划线_ 不能单独存在 没有意义

#1、格式 -- 对什么集合分区就返回什么集合,上面介绍的所有高阶函数的格式可能不对,最好去查源码

def partition(p: A => Boolean): (Repr, Repr)

#2、功能:对集合按条件分组

#3、展示如下:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值