如何使用scalaz.MonadPlus.separate将Eithers列表转换为列表中的任何一个

时间:2016-04-27 00:59:17

标签: scala scalaz

如何使用ListEithers Either Lists转换为MonadPlus.separateval 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

1 个答案:

答案 0 :(得分:1)

该解决方案是正确的,您在此处缺少import scalaz.Scalaz._