在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)