如何使用List
将Eithers
Either
Lists
转换为MonadPlus.separate
个val el : List[Either[Int, String]] = List(Left(1), Right("Success"), Left(42))
scala> val (lefts, rights) = el.separate
lefts: List[Int] = List(1, 42)
rights: List[String] = List(Success)
?
在this answer中,作者声称此解决方案,但未能提供导入或完整示例:
如果scalaz是您的依赖项之一,我只需单独使用:
separate
这是一个真正有效的解决方案吗?
我看到MonadPlus
有一个scalaz.MonadPlus.separate
函数,但我仍然无法使它工作。
ps:我知道我可以在没有scalaz的情况下实现这一点,例如下面的示例。但是,在这个问题中,我问如何使用(lefts, rights) = (el.collect { case Left(left) => left }, el.collect { case Right(right) => right })
来实现这一目标。
Error
答案 0 :(得分:1)
该解决方案是正确的,您在此处缺少import scalaz.Scalaz._
。