scala flatMap个人心得

scala flatMap个人心得scalaflatMap个人心得前几天,用scala写了一个小程序。用到了flatMap函数,发现没有想象的那么简单,所以现在写下自己的体会,方便记忆。由于本人也是初学者,如果内容有误,欢迎大家指出错误内容:flatMap的常见用法flatMap和Map的区别flatMap与Future

大家好,又见面了,我是你们的朋友全栈君。

scala flatMap个人心得

前几天,用scala写了一个小程序。用到了flatMap函数,发现没有想象的那么简单,所以现在写下自己的体会,方便记忆。

由于本人也是初学者,如果内容有误,欢迎大家指出错误

flatMap

文章目录

  1. flatMap的常见用法
  2. flatMap和Map的区别
  3. 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.net/142964.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • navicate15 激活码(JetBrains全家桶)

    (navicate15 激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月22日
    107
  • html 网页不可以复制粘贴,网页上的文字不能复制,三种方法教你复制全网文字…

    html 网页不可以复制粘贴,网页上的文字不能复制,三种方法教你复制全网文字…有时候在网上找文字素材的时候,一般做法是直接复制粘贴使用。但你有没有遇到过不能复制的时候?反正小编是有的!好不容易找到了需要的文字却复制不出来,是不是好让人闹心?!有什么办法可以避开这个限制,将网页的文字复制下来为我所用呢?今天小编就分享三种方法给大家,不多不少就三种,帮你轻松搞定网页限制,复制想要的文字~至于哪种最好,还是看大家的喜好啦!1、Ctrl+P没错,就是这个快捷键。p代表print,打…

    2022年10月13日
    0
  • Spring Framework 简介

    Spring Framework 简介SpringFramework依赖注入、事务管理、Web应用程序、数据访问、消息传递、测试和更多的核心支持。Tips:Spring 官网:https://spring.io/spr

    2022年8月4日
    5
  • php面试常问方法汇总

    php面试常问方法汇总

    2022年2月15日
    36
  • dump文件分析工具有哪些_java分析dump文件

    dump文件分析工具有哪些_java分析dump文件与具有众多的内存转储机制一样,Linux下也有众多的内存转储分析工具,下面将会逐一做简单介绍。Lcrash是随LKCD一起发布的一个内内存储分析工具。随着LKCD开发的停止,lcrash的开发也同时停止了。目前它的代码已经被合并进入Crash工具中。Alicia(AdvancedLinuxCrash-dumpInteractiveAnalyzer,高级Linux崩溃…

    2022年10月2日
    0
  • 手机app测试流程和方法_app测试方法和流程

    手机app测试流程和方法_app测试方法和流程1 APP测试基本流程1.1流程图1.2测试周期测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间。正式测试前先向主管确认项目排期。1.3测试资源测试任务开始前,检查各项测试资源。–产品功能需求文档;–产品原型图;–产品效果图;–行为统计分析定义文档;–测试设备(i…

    2022年9月5日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号