给定一个 Set[Either[BadObject, GoodObject]]
,我想把它转换成 Set[GoodObject]
, 同时记录所有 BadObjects
.
我遇到的问题是,当我尝试在 collect
中添加日志记录时调用,例如:
someMethodThatReurnsTheSet.collect {
case Right(value) => value
case Left(res) => logger.warn(s"Bad object : $res")
}
这改变了返回值,我得到了
Set[None]
,这不是我想要的。
最佳答案
import util.chaining._
someMethodThatReurnsTheSet
.partition(_.isRight)
.tap { case (_, lefts) => logger.warn(s"Bad objects $lefts") }
.pipe { case (rights, _) => rights }
关于scala - 过滤一组Either[x, y],记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60987651/