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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Springboot事务处理[通俗易懂]

    Springboot事务处理[通俗易懂]采用Aop对项目进行全局异常事务处理@Aspect@ConfigurationpublicclassTransactionAdviceConfig{ privatestaticfinalStringAOP_POINTCUT_EXPRESSION=”execution(*demo.service.impl.*.*(..))”; @Autowired privatePlatformTransactionManagertransactionManager; @Be

    2022年6月8日
    41
  • runnable 和 callable区别「建议收藏」

    runnable和callable有什么区别?相同点:1、两者都是接口;(废话)2、两者都可用来编写多线程程序;3、两者都需要调用Thread.start()启动线程;不同点:1、两者最大的不同点是:Runnable接口run方法无返回值;Callable接口call方法有返回值。2、Runnable接口run方法只能抛出运行时异常,且无法捕获处理;Callable接口call方法允许抛出异常,可以获取异常信息。注意:Callalbe接口支持返回执行结果,需要调

    2022年4月8日
    50
  • 写给大忙人看的操作系统

    文章主要结构图如下操作系统现代计算机系统由一个或多个处理器、主存、打印机、键盘、鼠标、显示器、网络接口以及各种输入/输出设备构成。然而,程序员不会直接和这些硬件打交道,而且每位程序员不可能会掌握所有计算机系统的细节,这样我们就不用再编写代码了,所以在硬件的基础之上,计算机安装了一层软件,这层软件能够通过响应用户输入的指令达到控制硬件的效果,从而满足用户需求,这种软件称之为操作系统,它的…

    2022年4月13日
    41
  • qaManager

    qaManager

    2021年8月25日
    57
  • 存储卡的使用方法大全

    存储卡的使用方法大全存储卡的使用方法大全现在购买诺基亚手机,尤其是其智能手机的朋友是越来越多了,与其他品牌的机型相比,诺基亚的手机有一个最大的优点,就是支持储存卡内存扩充的机型比较多,这让大家在使用中不必再担心手机容量的问题,这也体现了诺基亚“科技以人为本”的宣传口号。今天,就为大家讲一讲适用于诺基

    2022年7月11日
    53
  • 传真服务器的定义与选购

    传真服务器的定义与选购 AOFAX热点:传真服务器的定义与选购服务信息卡:联系人:朱成军服务热线:15920885998 商务QQ:909075483.一、传真服务器和传真系统传真服务器定义:所谓传真服务器,就是为企业内部所有员工提供电脑传真收发服务的设备,能够长期脱离其他电脑独立工作,是传真服务器的必要条件。传真服务器由传真软件、传真卡、工控机等组成。传真系统:传真服务器在某些场合也

    2022年6月28日
    27

发表回复

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

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