在 Scala 中将列表[Try[A]] 转换为列表[A]

2024-01-18

我想从输入数据中过滤掉错误的输入。我目前正在使用scala.util.Try包装任何异常。下面是一个简单的例子,其中 3I 抛出一个NumberFormatException。我想知道在 Scala 中是否有更好的方法来做到这一点?

val data = List ( ("Joe", "20"), ("James", "30"), ("Pete", "3I") )

scala> val parsedData = data.map{ d => Try{Person( d._1, d._2.toInt ) }}
parsedData: List[scala.util.Try[Person]] = List(Success(Person(Joe,20)), Success(Person(James,30)), Failure(java.lang.NumberFormatException: For input string: "3I"))

scala> val validdata = parsedData.map{ x => x match {
     | case Success(s) => Some(s)
     | case Failure(f) => None }
     | }
validdata: List[Option[Person]] = List(Some(Person(Joe,20)), Some(Person(James,30)), None)

scala> validdata.flatten
res13: List[Person] = List(Person(Joe,20), Person(James,30))

Use collect仅保留与您想要的模式匹配的值:

parsedData collect { case Success(x) => x }

这也将起作用,尽管我认为它不是很清楚:

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

在 Scala 中将列表[Try[A]] 转换为列表[A] 的相关文章

  • 如何在Python的Try/Catch块中捕获所有异常?

    我正在编写 python 代码来在 linux 环境中安装我的程序所需的所有库包 因此 linux 可能包含 python 2 7 或 2 6 或两者都包含 所以我开发了一个 try and except 块代码 将在 linux 中安装
  • 在 ASP.NET 中优雅地处理 URI 黑客攻击

    我编写了一个应用程序 可以优雅地处理大多数异常 页面设计完好无损 并且有一条漂亮的错误消息 我的应用程序将它们全部捕获在Page Error事件并添加了例外HttpContext Curent Context Items然后做了一个Serv
  • rmi类找不到异常

    我使用 java rmi 编写了一个简单的项目并导出到可执行 jar 文件 当我尝试运行它时 有时会出现异常 有时会起作用 当我指定 Djava rmi server codebase file serverClasses 时 它似乎没有正
  • 将括号子集映射到字符

    我正在尝试创建一个 Scala 方法 该方法将采用一个父括号组 表示为字符串 然后将每个括号子组映射到不同的字母 然后它应该将它们放入它返回的映射中 所以基本上我调用以下方法 如下所示 val s 2 x 3 6 val map mapPa
  • 这是一种在 Akka FSM 中内部监视到第一个状态的转换的方法吗?

    考虑从状态 Idle 开始的 FSM actor startWith Idle IdleData 我想监视到第一个状态的转换 从无状态 I tried onTransition case gt Idle gt Wasn t called 根
  • 异常的成本有多高[重复]

    这个问题在这里已经有答案了 你知道java中异常抛出和处理的代价有多大吗 我们就团队中异常的实际成本进行了多次讨论 有些人尽可能避免使用异常 有些人则认为使用异常会导致性能损失被高估了 今天我在我们的软件中发现了以下代码 private v
  • 如何对 RDD 进行分区

    我有一个文本文件 其中包含大量由空格分隔的随机浮动值 我正在将此文件加载到 scala 中的 RDD 中 这个RDD是如何分区的 另外 是否有任何方法可以生成自定义分区 以便所有分区都具有相同数量的元素以及每个分区的索引 val dRDD
  • PostgreSQL 自定义异常条件

    当我提出异常时是否可以创建自定义条件 考虑以下示例 BEGIN y x 0 EXCEPTION WHEN division by zero THEN RAISE NOTICE caught division by zero RETURN x
  • 为什么这个 Clojure 程序在可变数组上运行如此慢?

    剧透警告 这是 代码降临 第六天的第一部分 我试图解决this http adventofcode com day 6Clojure 和 Scala 中的问题 Scala 程序在我的 Macbook Air 上运行良好 几秒钟内就完成了 然
  • 如何处理java.util.concurrent.ExecutionException异常?

    我的代码的某些部分抛出 java util concurrent ExecutionException 异常 我该如何处理这个问题 我可以使用 throws 子句吗 我对java有点陌生 这取决于您的任务关键程度Future是为了如何处理它
  • 将类型信息传递给 Scala 中的函数

    我有对 json 对象执行一些常见操作的代码 即提取 所以我想创建一个通用函数 它接受哪个类的类型参数 代码如下所示 def getMessageType T json JValue Either GenericError T try Ri
  • 尝试后终于没有被调用

    由于某种原因 在我的控制台应用程序中 我无法运行我的finally 块 我编写这段代码是为了测试finally块是如何工作的 所以它非常简单 static void Main int i 0 try int j 1 i Generate a
  • 如何在 Scala Play 框架中进行 Twitter 反向身份验证?

    我正在编写一个 play 应用程序 在 scala 中 并且正在尝试执行 twitter 此处概述的反向身份验证步骤 https dev twitter com docs ios using reverse auth https dev t
  • 使用 Elastic4s 进行动态 ElasticSearch 映射

    我有一个文档要在elasticSearch上建立索引 该文档包含一些我事先无法知道的动态键 例如以下示例中的 西班牙语 或 法语 contents title spanish Hola amigos french Bonjour les a
  • 如何使用 Scala 2.11 和 sbt 0.13 运行 Cucumber?

    有人有使用 sbt 0 13 和 Scala 2 11 的 Cucumber 项目的示例吗 我需要两者吗cucumber scala 2 11和sbt cucumber plugin 0 8 0 该插件是最新的吗 插件现在去哪里了 哪里做
  • 如何自定义解析错误的 HTTP 400 响应?

    我编写了一个 REST API 服务 要求所有响应均为 JSON 但是 当 Go HTTP 请求解析器遇到错误时 它会返回 400 作为纯文本响应 而不会调用我的处理程序 例子 gt curl i H Authorization Basic
  • Scala Monad - 完整的示例[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Scala Stream 按需要调用(惰性)与按名称调用

    所以我知道按需要呼叫只是按名称呼叫的记忆版本 在 Martin Odersky 在 Coursera 上的 FP 课程中 第 7 3 讲 惰性评估 中 他提到如果 Streams 是使用按名称调用来实现的 那么它可能会导致计算复杂性的激增
  • JavaScript 反静默技术来指示失败

    当错误确实发生并且函数无法继续执行时 在 JavaScript 中报告错误而不是依赖 null 和 undefined 是一个好方法 我可以想到三种方法 没做什么 抛出异常 assert 这是一个简单的示例场景 一个将传入的金额记入用户帐户
  • 如何更改 SBT 命令内的设置?

    我想要一个命令publish snapshot这将运行publish修改后的任务version设置 该设置将在执行命令时计算 我想出了如何获取当前值version内部命令 以及Project runTask task scope 似乎是调用

随机推荐

  • Play 2 中是否有默认的捕获所有新操作的路由?

    在播放 1 中 您定义的新操作具有默认路由 controller action controller action 这在新项目中默认出现 Play 2 2 1 的等效版本是什么 为什么它没有出现在默认路由文件中 实际上有一条包罗万象的路线可
  • com.facebook.FacebookAuthorizationException:未知错误:密钥哈希与任何存储的密钥哈希不匹配

    我很多时间尝试将我的 Android 应用程序与 facebook 连接 但得到哈希密钥的解释 我在这里阅读了有关此问题的问题 但没有成功解决我的问题 我运行此代码来获取哈希密钥 try PackageInfo info getPackag
  • 如何在 SwiftUI 中设置分段控制器的高度?

    有没有办法改变 SwiftUI 中分段控制器的高度 或者只通过创建自定义分段控制器来实现 我尝试了 frame height 但没有任何改变 我需要增加分段控制器的高度 State private var userType 0 init U
  • Objective-C 访问数组

    我已完成以下尝试创建 2d 和 3d 数组 Array1 NSMutableArray alloc init Array2 NSMutableArray alloc init Array3 NSMutableArray alloc init
  • Rails:获取当前请求的控制器和操作

    在我的 Rails 应用程序中 我使用在views layouts application html erb中 奇怪的是 价值观params controller and params action 始终滞后 1 个请求如果它位于开口上方的
  • 如何为 PL/SQL 块的表达式中的变量赋值?

    当我运行此脚本时 它在该语句中返回错误no1 no1 no2 no2 no1 declare no1 number 3 31 no2 number 3 34 begin dbms output put line Before swap db
  • 如何使用 python 代码从给定的 url 获取 youtube 标题和描述?

    如何从给定 url 的 python 代码中获取 YouTube 标题和描述 是否需要使用youtube API 我正在编写一个程序 需要从给定的网址查找生成标题和描述 它不是必要的 但它可能比您自己编写要快得多且容易得多 有关更多信息 请
  • DevExtreme 和 Aurelia 集成

    DevExtreme 支持角度指令 如图所示 我如何才能通过 Aurelia 实现同样的目标 显示集成的示例 https www youtube com watch v iIZj6hOFg0o https www youtube com w
  • 重写 Rails 中的 getter/setter,同时保留 Model.new({attrib: 'blah'}) 格式

    如果我重写模型中的 getter 和 setter 那么在控制器中为该属性创建默认初始值的最佳方法是什么 例如 当我在控制器中创建模型的新实例以包含一些初始值时 表单中的预填充值显示来自 setter 而不是 getter 的输出 这应该怎
  • 在媒体窗口中选择图片后添加/更新自定义字段 (Wordpress)

    我有一个关于 WordPress 的问题 我刚刚在添加 编辑帖子页面中添加了一个名为 添加滑块 的按钮 这是我的 function php 中的代码 Add button to create slider add action media
  • 求值器中的表达式非法(&访问冲突)

    我试图通过使用类 Tbb2uc 来处理纯文本文件 加载到 StringList 中 但在调用函数 GetAddress 时获取 AV TArrayQuotePositions array 1 4 of integer Tbb2uc clas
  • 将 CSV 直接下载到 Python CSV 解析器中

    我正在尝试从 Morningstar 下载 CSV 内容 然后解析其内容 如果我将 HTTP 内容直接注入 Python 的 CSV 解析器 结果的格式不正确 然而 如果我将 HTTP 内容保存到文件 tmp tmp csv 然后将该文件导
  • 如何从 MailItem 获取特定于任务的属性

    我一直在为自己做一个周末小项目 其中包括从 Outlook 获取所有 ToDo 任务 将它们放入 DataGridView 中 然后我就能够编辑和导出它们 我遇到的唯一问题是 当标记的电子邮件仍然存在时 我无法获取它们的任务特定属性 我只是
  • 声明 std::string 变量后,Cout 没有输出

    我编写了一个简单的程序 返回作为参数传递的 IP 地址的主机名 该程序使用两个函数 getaddrinfo 和 getnameinfo 我正在使用 Linux Mint Netbeans IDE 和 G 编译器 输出没问题 没有错误 但是当
  • 阿拉伯字符“??????”关于 php 和 mysql [重复]

    这个问题在这里已经有答案了 这是我的问题 我有一个阿拉伯数据库 mysqli UTF8 general ci 并且我的 php 文件的字符集是 UTF 8 当我出售数据时 我得到 在 php 上 我的管理员我可以毫无问题地写入和读取 在 p
  • Django 模型主键作为一对

    我正在尝试制作一个应用程序 用户可以登录他们的个人资料并将歌曲添加到他们最喜欢的列表中 我为此定义了 M2M 关系 我的问题是如何说 歌曲 歌手 的组合是独特的 我搜索了一下 发现通过unique together也许可以 这是设置的正确方
  • 使用 LEFT JOIN 删除

    我想根据引用第一个表的另一个表中存在的数据从表中删除 但是 当我将其作为 SELECT stetement 运行时 我有有效的代码并显示要删除的值 但是当我将其更改为删除它给了我错误 我不明白它们为什么在那里 DELETE leadCust
  • 如何使用facet_wrap在每个方面具有不同数字的离散类别之间创建相等的距离

    我的目标是使图中所有国家之间的距离大致相等 例如 在第一类中 Increase 国家分散 另一方面 第二类和第三类国家彼此距离太近 这迫使我减小国家文本的大小 例如 IS UK 和绘制的估计值 例如 1 5 1 2 因此 一旦我将此文件提取
  • GCE Kubernetes 会话持久化

    我正在 GCE Kubernetes 上运行一个 wordpress woocommerce 网站 但由于会话持久性而在扩展时遇到问题 LoadBalancer GCE Ingress 将所有流量发送到反向代理 然后反向代理将流量发送到我设
  • 在 Scala 中将列表[Try[A]] 转换为列表[A]

    我想从输入数据中过滤掉错误的输入 我目前正在使用scala util Try包装任何异常 下面是一个简单的例子 其中 3I 抛出一个NumberFormatException 我想知道在 Scala 中是否有更好的方法来做到这一点 val