博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
map和flatMap
阅读量:5892 次
发布时间:2019-06-19

本文共 1021 字,大约阅读时间需要 3 分钟。

hot3.png

在函数式语言中,函数作为一等公民,可以在任何地方定义,在函数内或函数外,可以作为函数的参数和返回值,可以对函数进行组合。由于命令式编程语言也可以通过类似函数指针的方式来实现高阶函数,函数式的最主要的好处主要是不可变性带来的。没有可变的状态,函数就是引用透明(Referential transparency)的和没有副作用(No Side Effect)。 

任何一种函数式语言中,都有map函数与faltMap这两个函数,比如虽然不是纯函数式语言,也有这两个函数。再比如在jdk1.8之后,也加入了Lambda表达式,自然也支持map函数。 
现在简单说说中这两个函数的用法。有一种观点认为将map和flatMap说成函数机制的核心都不为过分,其实是有一定道理的。因为实际中我们使用最多的场景就是对数据进行map操作或者flatMap操作。map函数的用法,顾名思义,将一个函数传入map中,然后利用传入的这个函数,将集合中的每个元素处理,并将处理后的结果返回。而flatMap与map唯一不一样的地方就是传入的函数在处理完后返回值必须是List,其实这也不难理解,既然是flatMap,那除了map以外必然还有flat的操作,所以需要返回值是List才能执行flat这一步。 
废话不多说,看一个小例子就明白用法了。

object collection_t1 {  def flatMap1(): Unit = {    val li = List(1,2,3)    val res = li.flatMap(x => x match {      case 3 => List('a','b')      case _ => List(x*2)    })    println(res)  }  def map1(): Unit = {    val li = List(1,2,3)    val res = li.map(x => x match {      case 3 => List('a','b')      case _ => x*2    })    println(res)  }  def main(args: Array[String]): Unit = {    flatMap1()    map1()  }}

 

转载于:https://my.oschina.net/u/2935389/blog/1359380

你可能感兴趣的文章
EL 表达式小结
查看>>
内部排序
查看>>
jQuery EasyUI API 中文文档 - 组合(Combo)
查看>>
10个关于 Dropbox 的另类功用(知乎问答精编)[还是转来了]
查看>>
Oracle体系结构
查看>>
用Modelsim仿真QII FFT IP核的时候出现的Error: Illegal target for defparam
查看>>
javascript Error对象详解
查看>>
nc 局域网聊天+文件传输(netcat)
查看>>
每天一个linux命令(25):linux文件属性详解
查看>>
go微服务框架go-micro深度学习(三) Registry服务的注册和发现
查看>>
python 重载方法有哪些特点 - 老王python - 博客园
查看>>
在Fedora8上安装MySQL5.0.45的过程
查看>>
设计模式之命令模式
查看>>
android 测试 mondey
查看>>
Spring AOP项目应用——方法入参校验 & 日志横切
查看>>
使用REST-Assured对API接口进行自动化测试
查看>>
王潮歌跨界指导HUAWEI P20系列发布会 颠覆传统 眼界大开!
查看>>
王高飞:微博已收购一直播 明年一季度重点是功能与流量打通
查看>>
趣头条发行区间7至9美元 预计9月14日美国上市
查看>>
新北市长侯友宜:两岸交流应从隔壁最亲近的人开始
查看>>