Wie ein List
von Eithers
zu einem Either
von Lists
drehen, MonadPlus.separate
mit?Wie man eine Liste der Eithers auf ein Entweder-Listen drehen scalaz.MonadPlus.separate mit
In this answer der Autor dieser Lösung behauptet, aber nicht die Ein- oder vollständiges Beispiel zur Verfügung zu stellen:
Wenn scalaz eine Ihrer Abhängigkeiten ist, würde ich einfach getrennt verwenden:
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)
Ist das eine echte Arbeitslösung? Ich sehe, dass MonadPlus
eine separate
Funktion hat, aber ich schaffte es immer noch nicht, es zum Funktionieren zu bringen.
ps: Ich bin mir bewusst, dass ich dies ohne Scalaz erreichen kann, wie das Beispiel unten. In dieser Frage frage ich jedoch, wie man scalaz.MonadPlus.separate
verwendet, um dies zu erreichen.
(lefts, rights) = (el.collect { case Left(left) => left }, el.collect { case Right(right) => right })
Im Zweifelsfall alles importieren .. 'import scalaz._, Scalaz._' –
Wenn Sie die spezifischen Importe möchten, können Sie [meine ähnliche Antwort] (http://stackoverflow.com/a/36556060/5020846) zu einem Duplikat der verknüpften Frage. –