在Scala中,我有一个Array[Option[(String,String,Try[String])]],想找到所有的Failure错误代码。

如果内部monad相反是Option[String],则我可以使用干净的一点来访问Some(x)内容以进行理解,例如:

for {
  Some(row) <- row
  (a,b,c) = row
  x <- c
} yield x

但是,如果内部monad是一个Failure,那么我将努力查看如何对其进行模式匹配,因为我无法将Failure(x) <- c放在for语句中。这似乎是我很想念的一件非常简单的事情,但是任何指导都是非常有价值的。

非常感谢!

编辑-错误指定了数组。它实际上是一个选项元组3的数组,而不仅仅是元组3。

最佳答案

a.map(_._3).filter(_.isFailure)可以吗?

编辑:看完编辑和您的评论后,我想您也可以

val tries = for {
    x <- a
    z <- x
} yield z._3

tries.filter(_.isFailure)

10-06 11:25