首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scala Iterable#map与Iterable#flatMap

scala Iterable#map与Iterable#flatMap
EN

Stack Overflow用户
提问于 2009-06-29 18:36:12
回答 5查看 22K关注 0票数 58

Iterablemap函数和flatMap函数有什么不同

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-06-29 20:33:13

这里有一个很好的解释:

http://www.codecommit.com/blog/scala/scala-collections-for-the-easily-bored-part-2

以list为例:

Map的签名是:

代码语言:javascript
复制
map [B](f : (A) => B) : List[B]

而flatMap的是

代码语言:javascript
复制
flatMap [B](f : (A) => Iterable[B]) : List[B]

因此,flatMap采用类型A并返回可迭代类型B,而map采用类型A并返回类型B

这也会给你一个想法,扁平图将“扁平化”列表。

代码语言:javascript
复制
val l  = List(List(1,2,3), List(2,3,4))

println(l.map(_.toString)) // changes type from list to string
// prints List(List(1, 2, 3), List(2, 3, 4))

println(l.flatMap(x => x)) // "changes" type list to iterable
// prints List(1, 2, 3, 2, 3, 4)
票数 44
EN

Stack Overflow用户

发布于 2009-06-29 20:37:50

以上都是正确的,但还有一件事很方便:flatMapList[Option[A]]转换为List[A],并删除任何深入到NoneOption。这是超越使用null的一个关键的概念突破。

票数 57
EN

Stack Overflow用户

发布于 2009-06-29 18:40:00

来自scaladoc

  • map

返回通过将给定函数f应用于此迭代器的每个元素而得到的迭代器。

  • flatMap

将给定的函数f应用于此迭代器的每个元素,然后连接结果。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1059776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档