【发布时间】:2020-01-30 23:33:07
【问题描述】:
如何方便地将 Seq[Try[Option[String, Any]]] 转换为 Try[Option[Map[String, Any]]]。
如果转换之前的任何 Try 抛出异常,则转换后的 Try 也应该抛出。
【问题讨论】:
-
我认为
Option[String,Any]没有意义。 Option 采用单个类型参数。你是说Option[(String,Any)]吗? -
我不明白
Try[Option[SOMETHING]]的意思。选项是None或Some,表示无效值在到达Try时已被处理。好像有点多余。 -
@jrook 有一个场景你想跟踪一个操作是成功还是失败,即使这个操作成功了,它也可以返回一个 None 或 Some。
-
@texasbruce 如果我控制签名并从操作中获取
None,我已经知道发生了一些不好的事情。如果我想知道发生这种情况的原因,那么我会直接Try操作。一个操作产生 None 而没有任何错误的情况对我来说似乎是可疑的。为什么我想要一个可以产生None作为正常值的逻辑?如果您能向我展示一个真实的用例,我将不胜感激。 -
@jrook 有很多情况,比如你从 db 中查询一条记录。您使用 Try 来指示数据库或连接是否有问题。然后用 Some 或 None 表示记录是否存在。
标签: scala