Scala Future 带有过滤器以供理解

2024-01-21

在下面的示例中我得到了异常java.util.NoSuchElementException: Future.filter predicate is not satisfied

我想要结果Future( Test2 )当检查if( i == 2 )失败。如何在处理撰写 future 的 for 理解中处理过滤器/if?

下面是一个在 Scala REPL 中运行的简化示例。

Code:

import scala.concurrent.Future
import scala.util.{ Try, Success, Failure }
import scala.concurrent.ExecutionContext.Implicits.global

val f1 = Future( 1 )
val f2 = for {
  i <- f1
  if( i == 2 )
} yield "Test1"
f2.recover{ case _ => "Test2" }
f2.value

在我看来,这是一个更惯用的解决方案。该谓词函数创建一个Future[Unit]或者包含你的例外的失败的未来。对于您的示例,这将导致Success("Test1") or a Failure(Exception("Test2"))。这与“Test1”和“Test2”略有不同,但我发现这种语法更有用。

def predicate(condition: Boolean)(fail: Exception): Future[Unit] = 
    if (condition) Future( () ) else Future.failed(fail)

你像这样使用它:

val f2 = for {
  i <- f1
  _ <- predicate( i == 2 )(new Exception("Test2"))
  j <- f3  // f3 will only run if the predicate is true
} yield "Test1"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scala Future 带有过滤器以供理解 的相关文章

随机推荐

  • Rails 3:如何使用 Rails 在数据库中插入记录

    我是 Rails 新手 我正在尝试学习这项技术 所以如果问题很愚蠢 请原谅 我正在使用 Rails 3 请让我知道如何在数据库中插入记录 我正在使用 postgresql 下面是学生表的表结构 SELECT column name FROM
  • 如何启用 mongodb cli 漂亮打印? - db.col.find().pretty() 不工作

    使用 mongo v2 4 5 shell db col find pretty 在 osx 控制台或 linux ubuntu 12 04 bash 上都不能很好地打印 使用和不使用 Pretty 的输出没有差异 gt db people
  • 使用 C# 填充引导下拉列表

    如何从代码隐藏填充引导下拉列表 现在我正在尝试这个 HtmlGenericControl li for int x 3 x lt 10 x li new HtmlGenericControl li li Attributes Add cla
  • 在 TypeScript 中将 JSON 文件导入为 const

    我想从数组元素的属性创建一个联合类型 如果数组是内联的 那么使用常量断言就非常简单 const arr name One name Two as const type name typeof arr number name name One
  • ply lexmatch 正则表达式与通常的 re 有不同的组

    我正在使用 ply 并注意到存储在 t lex lexmatch 中的令牌 re 匹配与 re 模块以通常方式定义的 sre pattern 之间存在奇怪的差异 组 x 似乎偏离了 1 我定义了一个简单的词法分析器来说明我所看到的行为 im
  • 查找邮政编码指定距离内的所有邮政编码

    我知道这个问题听起来像是这里几个问题的重复 但这些问题都没有回答我想要的 我有兴趣知道是否有人知道如何在指定邮政编码的半径内找到其他邮政编码 我有带有纬度和经度的邮政编码数据库 但我不知道如何在 VB net 中执行此操作 例如 90069
  • WebAPI 混合隐式流程和客户端凭证流程

    我有一个 WebAPI 解决方案 可以通过 Authorize 属性保护其控制器方法 它验证给定用户是否具有适当的角色 这些角色基本上是来自 IdentityServer3 的声明 有多个单页应用程序客户端与此 WebAPI 交互 并且使用
  • x509 Go 包 - ParsePKIXPublicKey 是 DER 还是 PEM?

    我正在尝试获取 rsa PublicKey 的对象 并且执行了以下步骤 BEGIN RSA PUBLIC KEY END RSA PUBLIC KEY package main import crypto rand crypto rsa c
  • 浏览器自动填充选项与角度材质自动完成选项重叠

    在有角度的材料中 材料自动完成工作正常 但浏览器自动填充选项与材料自动完成弹出窗口重叠 如何在不关闭浏览器自动填充的情况下关闭特定应用程序的自动填充 附参考图片 它也工作
  • Django 1.8:删除迁移文件夹后未检测到迁移

    我不小心删除了 migrations 文件夹 现在 python manage py makemigrations 无法检测到我的模型中的更改 我该怎么办 shubham shubham PC Documents try ecommerce
  • 片段包接收空值

    我有两个片段 我想将数据从一个片段传递到另一个片段 该捆绑包在发送时具有第一个片段的值 但不在另一个片段中接收 以下是代码 第一个片段 public View onCreateView NonNull LayoutInflater infl
  • TomEE CDI @Inject NullPointerException

    我试图让 CDI 在我的应用程序中工作 但是当我这样做时 我只得到 NullPointerExceptions 当正常实例化 playlistService 时 它 工作得很好 但是当我尝试使用 CDI 时 它就不再工作了 服务器能够启动
  • 让 2 个不同的父实体通过 JPA 中的 @OneToMany 引用子实体

    我有一个有点奇怪的问题 我不知道JPA是否支持这个 我有一个 Entity Child和另外两个实体 Entity Parent1 and Entity Parent2 我想做的是有一个 OneToMany父母和孩子之间的关系 以及另一个
  • 使用 Google datalab 读取文件

    我正在尝试使用 Google Datalab 读取 ipython 笔记本中的文件 基本的 pd read csv 因为我找不到文件的路径 我把它放在本地 并将其上传到谷歌云存储的一个桶中 我运行了以下命令来了解我在哪里 os getcwd
  • 调用外部意图(相机)时调试器断开连接

    我正在尝试调试我的应用程序 因为从我调用相机意图到拍摄照片时发生了一些事情 并且我的应用程序在返回时强制关闭 问题是 当调用相机意图时 调试器会立即断开连接 并且我无法再调试我的应用程序 我正在设备上调试 而不是模拟器上 我在谷歌中发现了这
  • 将图像添加到 JavaFX 特定位置的按钮

    当我向按钮添加图像和文本时 默认情况下元素是水平设置的 如何更改此行为以在图像下获取文本 Set the 内容显示属性 http docs oracle com javafx 2 api javafx scene control Label
  • gitk 中“标记此提交”是什么意思?

    使用 gitk 时 可以在日志窗格中选择提交 右键单击上下文菜单会提供 标记此提交 那有什么作用 查看以下选项 返回标记 找到它的后代并标记 与标记的提交进行比较
  • iOS 8 + 交互式过渡 + 显示的导航栏 = 损坏?

    我们正在尝试在我们的应用程序中添加两个视图之间的交互式过渡 我们可以让它在 iOS 7 或 iOS 8 上正常工作不显示导航栏 但是 我们需要显示一个导航栏 为了演示我们遇到的 一些 问题 我创建了一个小型原型 屏幕截图如下所示 我尝试了
  • 限制 unserialize() 返回数组?

    有没有办法限制 PHP 的 unserialize 只解析数组 出于安全原因 假设在未序列化的对象中有一个邪恶的 unserialize 魔术方法 我不想调用 有没有办法限制 PHP 的 unserialize 只解析数组 出于安全原因 假
  • Scala Future 带有过滤器以供理解

    在下面的示例中我得到了异常java util NoSuchElementException Future filter predicate is not satisfied 我想要结果Future Test2 当检查if i 2 失败 如何