(警告 - 我是一个scala noob)给定一系列Eithers
,即
theResults : Seq[Either[Error, String]]
我试图通过使用left(s)
theResults match {
case r if r.exists(_.isLeft) => {
val errors = theResults.map(r => r.left)
...
}
然而,这会返回
Seq[Either.LeftProjection[ErrorResponse, String]]
而不是我希望的Seq[ErrorResponse]
。
请把我从痛苦中解救出来?
答案 0 :(得分:1)
最简单的选择可能是:
val lefts = theResults.map(_.left.toOption).flatten
将返回Error
的序列(或任何左类型)。
就我个人而言,我认为scalaz
Either可以更好地使用,因为它有正确的偏见......
答案 1 :(得分:-1)
这个怎么样?
val lefts = theResults.filter(_.isLeft).map(_.asInstanceOf[Left].a)