0

(警告 - 我是一个 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]我希望的那样。

请让我摆脱痛苦?

4

2 回答 2

1

最简单的选择可能是:

val lefts = theResults.map(_.left.toOption).flatten

这将返回一个序列Error(或任何左边的类型)。

就个人而言,我认为scalazEither更好用,因为它偏右......

于 2014-05-26T09:03:11.907 回答
-1

这个怎么样?

val lefts = theResults.filter(_.isLeft).map(_.asInstanceOf[Left].a)
于 2014-05-26T09:26:43.397 回答