Ich habe zwei Funktionen mit der gleichen Implementierung - nur eine Handles Option
und die anderen Handles Seq
. Ich möchte Generics verwenden, um dies als eine einzige Funktion zu schreiben, die Iterable
behandelt, während der konkrete Typ im aufrufenden Code beibehalten wird - wenn das möglich ist?Verwenden von Iterable mit Scala-Generika
def f[T](a: Seq[Failure \/ T]): Failure \/ Seq[T] = { ??? }
def g[T](b: Option[Failure \/ T]): Failure \/ Option[T] = { ??? }
Die Implementierung ist nicht wichtig, aber für Kontext sie aus einer Sammlung von Ergebnissen übersetzen (von denen jedes entweder gelungen (T
) oder nicht (Failure
)) entweder auf einen einzigen Fehler oder eine vollständige Sammlung von erfolgreichen Ergebnissen. \/
ist nur scalaz Version von Entweder.
Ich suche so etwas zu tun:
def f[I[T] <: Iterable[T]](results: I[Failure \/ T]): Failure \/ I[T] = { ??? }