scala flatMap个人心得
scala 个人 心得 flatMap
2023-06-13 09:11:27 时间
大家好,又见面了,我是你们的朋友全栈君。
scala flatMap个人心得
前几天,用scala写了一个小程序。用到了flatMap函数,发现没有想象的那么简单,所以现在写下自己的体会,方便记忆。
由于本人也是初学者,如果内容有误,欢迎大家指出错误
flatMap
文章目录
- flatMap的常见用法
- flatMap和Map的区别
- flatMap与Future
1 . flatMap常见用法
首先看看scala中Seq 的flatMap的函数定义
def flatMap[B](f: (A) ⇒ GenTraversableOnce[B]): Seq[B]
Builds a new collection by applying a function to all elements of this sequence and using the elements of the resulting collections.
意思大概就是将f这个函数应用到Seq里的所有元素,并将函数产生的集合里的元素取出来,组成一个新的集合。然后返回这个新的集合
举个栗子:
def getWords(lines: Seq[String]): Seq[String] = lines flatMap (line => line split " ")
val e = Seq("I love","coding scala")
getWords(e).foreach(println(_))
最后打印输出了
函数说明
getWords(e)先将e中的两个元素:”I love”,”coding scala”,变成Seq(”I”,”love”)和Seq(“coding”,”scala”),然后从那两个Seq中取得元素,组成一个新的Seq(“I”,”love”,”coding”,”scala”)。
所以flatMap就是将函数产出的集合串接在一起。
值得注意的是: flatMap最后返回的集合是以谁调用他为准的,比如Seq调用flatMap,返回的就是Seq。List就是返回List.
看代码:
// lettersOf will return a Seq[Char] of likely repeated letters, instead of a Set
def lettersOf(words: Seq[String]) = words flatMap (word => word.toSet)
// lettersOf will return a Set[Char], not a Set
def lettersOf(words: Seq[String]) = words.toSet flatMap (word => word.toSeq)
2 .flatMap和Map的区别
在知乎中看到的,觉得很有道理:
flatMap=map + flatten
3 .flatMap与Future
在1中我们讲到flatMap是将函数产生的List[List[T]]串接成List[T] 而flatMap也可将Future[Future[T]]串接成Future[T] 这部分我也只知道一部分,等我更懂了再来发
OVER!
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/142964.html原文链接:https://javaforall.cn
相关文章
- Scala跳出循环的三种方法
- scala代码格式化
- scala的隐式转换学习总结(详细)
- Scala 【 10 函数式编程 】
- Scala 【 9 Trait 】
- Scala 【 5 数组常见操作和 Map 】
- Scala 【 3 循环、函数和参数 】
- java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: scala/runtime/LambdaDeserialize
- 新一代编程:scala泛函编程技术-唠叨详解编程语言
- 使用Scala操作MySQL数据库(scalamysql)
- 《Scala教程》 3.Scala Classes
- 元素如何用Scala统一删除Redis中的元素(scala删除redis)