对于理解有类似“flatYield”之类的东西吗?

2024-04-03

我有一些代码像

//all data have different types
val data1Future = loadData1(params)
val data2Future = loadData2(params)
val data3Future = loadData3(params)

def saveResult(rez): Future[_] = ???

data1Future.flatMap { data1 =>
  data2Future.flatMap { data2 =>
    data3Future.flatMap { data3 =>
      //do some computation
      //several rows and several vals
      val rez = ???
      saveResult(rez)
   }
  }
}

但它有点难看:)不幸的是,我不能用于理解,因为我需要像“平坦产量”这样的东西

for {
  data1 <- data1Future
  data1 <- data1Future
  data1 <- data1Future
} flatYield {
  //do some computation
  //several rows and several vals
  val rez = data1 + data2 + data3
  saveResult(rez)
}

您是否知道像“用于理解”这样优雅的模式,但在链的末尾使用 flatMap 而不是 map ?


你可以这样做:

for {
  data1 <- data1Future
  data2 <- data2Future
  data3 <- data3Future
  rez = {
    //do some computation
    //several rows and several vals
    data1 + data2 + data3
  }
  r <- saveResult(rez)
} yield r

这翻译成

data1Future.flatMap { data1 =>
  data2Future.flatMap { data2 =>
    data3Future.flatMap { data3 =>
      val rez = {
        //do some computation
        //several rows and several vals
        data1 + data2 + data3
      }
      saveResult(rez).map(r => r)
    }
  }
}

这与您的代码同构。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对于理解有类似“flatYield”之类的东西吗? 的相关文章

随机推荐

  • 浏览器也可以缓存嵌入的 Base64 图像吗?

    我想知道是否有任何现代浏览器实际上缓存了嵌入的图像 base64 字符串 这在不久的将来有可能吗 基于 W3C 或主要浏览器的官方文档 我不这么认为 因为你错过了Resource Identifier作为缓存图像的键 对于嵌入图像 您只有数
  • 使用 pandas 标记每组的每 N 行

    我有一个数据框 其中包含客户信息及其购买详细信息 我正在尝试添加一个新列 指示同一客户每进行第三次购买 下面给出的是数据框 customer name bill no date Mark 101 2018 10 01 Scott 102 2
  • input:not(:placeholder-shown) ~ 标签选择器不适用于自动填充

    我在输入字段中有浮动占位符 当我们未提供输入值时 占位符将出现在中心 如下图所示 电子邮件和密码为占位符 现在 当您向电子邮件提供值时 它确实如下所示 观察提供值后 电子邮件和密码已被提取 当浏览器开始从页面加载时保存的凭据 如用户名 电子
  • NSCalendar NSDateComponents weekofYear 返回 1,日期为 2014-12-31

    我想获得日期为 2014 12 31 的 weekofYear 但它总是返回 1 而不是 52 这是我的代码 NSCalendar calendar NSCalendar currentCalendar NSUInteger unitFla
  • 为什么 Google 的 pandas_datareader 不起作用?

    我尝试通过以下代码从谷歌财经获取数据 import pandas datareader data as wb import datetime as dt start dt datetime 2015 1 1 end dt datetime
  • nginx php 友好的 URL 重定向,不会干扰 index.php 导致 /index

    我尝试了很多不同的配置来启用任何以 php 结尾的请求的永久重定向 以重定向到不带 php 的自身 问题是 我无法获得将使用 index php 发送到任何目录的请求重定向到 而不是 index 的规则 Example 期望的行为 blog
  • 如何获取系统设备语言,swift iOS

    如何使用 swift iOS 获取系统设备语言 而不是应用程序语言 我没有遇到任何问题 我想从以下位置获取设备语言设置 gt 常规 gt 语言该用户将语言设置为 我尝试了下面的代码 let appLang Locale preferredL
  • 如何处理异步。护照和猫鼬的 findOrCreate 方法

    身份验证模块 Passport 需要 FindOrCreate 方法才能进行登录 我使用 mongoose 来保存我的用户 其架构如下 var UserSchema new Schema firstname String lastname
  • AspectJ Maven 插件无法编译我的项目

    我尝试使用aspectj maven插件使用aspectj编译器来编译项目 然后尝试将类打包到 war 文件中 不幸的是 它不适用于以下配置 pom xml
  • 限制属性的字符串长度

    当我试图找出一个更大的问题时出现了这个问题 为了简单起见 我省略了这个问题 我必须用 C 表示某种数据结构 它是一种用于与外部系统通信的协议 因此 它具有一系列具有预定义长度和整数 或其他更复杂的数据 的字符串 我们假设 SYSTEM fo
  • Android WebRtc 本地视频流无法在棉花糖上显示,但可以在棒棒糖上显示

    添加的库 libjingle peerconnection jar Version 1 7 0 101 libjingle peerconnection so so 等级依赖性 fi vtt nubomedia utilities andr
  • 无法在VS2010/SQL Server 2012中使用SSIS SSDT

    我在本地计算机上安装了完整版本的 Sql Server 2012 并从安装包 和更新 安装了 SSDT 然后 我打开 SSDT Visual Studio 应用程序并安装 Microsoft 的 SSDT 包 该包似乎工作正常 但是 当我尝
  • 在我的包的子包中运行 python 脚本

    无法弄清楚正确 python 2 x 首选方式进行相对导入 以便我可以将测试脚本放在一个子包中 并使这些测试脚本能够测试我的库 farm testpad testpad py Traceback most recent call last
  • 在闪亮的应用程序中在后台运行任务

    我有一个闪亮的应用程序 它通过以下方式获取输入selectizeInput并将数据输入到固定大小的数据框中 该数据框会在用户输入数据时显示和更新 当用户输入数据时 数据框被填充 每次用户输入新数据时 我都会使用谷歌表格 https gith
  • QT QGraphics场景绘制圆弧

    我有一个关于在场景上绘制特定弧线的问题 我有关于弧的信息 起始坐标 起始角度 结束角 半径 但我无法有效地使用它们QPainter 其实我尝试过QPainterPath使用形状来显示QGraphicsScene with addPath 但
  • 当Android应用程序关闭或失去焦点时如何调用方法?

    因为我正在构建的应用程序将处理相当敏感的数据 所以我想在每次用户登录时将 SQLite 数据库与服务器同步 并在每次应用程序失去焦点时删除空数据库 因为用户移动到主屏幕或另一个应用程序 Seeing 活动生命周期 http develope
  • 如何在 Intellij IDEA 中查找父传递依赖项

    我可以看到我的项目的 Gradle 依赖项有 2 个版本的 google guice 库 com google inject guice 4 0 和 com google inject guice 3 0 我试图找到这些是从哪个父库导入的
  • 如何在 Pester 测试中模拟 Read-Host?

    如果我有这个功能 Function Test Foo filePath Read Host Tell me a file path 我如何模拟读取主机以返回我想要的内容 例如我想做这样的事情 这不起作用 Describe Test Foo
  • 为什么 setImageResource 不显示任何内容?

    我想根据数据库值在 ListView 中显示一个图标 我跟随this https stackoverflow com questions 2192082 android changing an imageview src depending
  • 对于理解有类似“flatYield”之类的东西吗?

    我有一些代码像 all data have different types val data1Future loadData1 params val data2Future loadData2 params val data3Future