如果我有一个或多个Either值,我怎么能以功能方式组合它们,这样我就可以记录一个错误,如果有一个左值,但如果有一个正确的值则继续在该函数中。例如
def composeEither(ethr: Either[Error, String]): Either[Error, String] = {
ethr match { case Left(err) => log.error(err.getMessage) }
//this obviously will not work but something like map that is right biased
ethr map { e => e } //Just for the sake of example - there might be a different either calculated within the map
}
请告诉我是否还有其他任何内容可以让我的问题更加明确。
答案 0 :(得分:3)
像这样的东西,也许:
ether
.right
.flatMap(anotherEither(_).right)
.flatMap(yetAnother(_).right)
.left
.map { err => logError(_.getMessage); err }