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!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/142964.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • poe交换机供电原理图_poe供电原理详解

    poe交换机供电原理图_poe供电原理详解POE指的是在现有的以太网Cat.5布线基础架构不作任何改动的情况下,在为一些基于IP的终端(如IP电话机、无线局域网接入点AP、网络摄像机等)传输数据信号的同时,还能为此类设备提供直流电的技术.就是支持以太网供电的交换机。那么,POE交换机的供电原理及工作过程是什么呢?接下来我们就跟随飞畅科技的小编一起来详细了解下吧!POE交换机供电原理标准的五类网线有四对双绞线,但是在10MBASE-T和100MBASE-T中只用到其中的两对。IEEE802.3af允许两种用法,应用空闲脚供电时,4、5脚连

  • opencv之haar特征+AdaBoos分类器算法流程(二)[通俗易懂]

    opencv之haar特征+AdaBoos分类器算法流程(二)

  • C# Grid StackPanel DockPanel WrapPanel

    C# Grid StackPanel DockPanel WrapPanelWPF面板布局介绍Grid、StackPanel、DockPanel、WrapPanel回顾       上一篇,我们介绍了基本控件及控件的重要属性和用法,我们本篇详细介绍WPF中的几种布局容器及每种布局容器的使用场景,当然这些都是本人在实际项目中的使用经验,可能还存在错误之处,还请大家指出。本文大纲1、Grid2、StackPanel3、DockPanel…

  • webpack-dev-server简记

    webpack-dev-server简记

  • jsp printwriter_java socket编程

    jsp printwriter_java socket编程JavaPrintWriter类在本教程中,我们将通过示例来学习JavaPrintWriter及其print()和printf()方法。java.io包的PrintWriter类可用于以通常可读的形式(文本)写入输出数据。它继承了抽象类Writer。PrintWriter的工作方式与其他写入器不同,PrintWriter将原始数据(int、float、char等)转换为文本格式。然后它将格式…

  • spring cloud oauth2 替换用户信息

    spring cloud oauth2 替换用户信息

发表回复

您的电子邮箱地址不会被公开。

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