Gibt es einen idiomatischen Weg, um eine Sammlung von Validierungen in Scalaz6 zu behandeln?
%Vor%Ich könnte mir eine Falte vorstellen, wenn ich die Ergebnisse wiederhole, aber was ist mit dem letzten Test?
Um mit einer Liste von Validierungen zu arbeiten, verwenden Sie normalerweise sequence
, um die Liste in ein Validation[A, List[B]]
zu verwandeln, das leer ist (dh ein Failure
), wenn Fehler auf dem Weg auftreten .
Die Sequenzierung von Validation
akkumuliert Fehler (im Gegensatz zu Either
, was sofort fehlschlägt) in der Halbgruppe des linken Typs. Deshalb sehen Sie oft ValidationNEL
(wobei NEL
für NonEmptyList
steht) anstatt einfach Validation
. Wenn Sie zum Beispiel folgendes Ergebnis haben:
Und einige Ergebnisse:
%Vor%Bei der Sequenzierung erhalten Sie Folgendes:
%Vor%Wenn wir so ein paar Fehler hatten:
%Vor% Wir würden mit einem Failure
enden (beachten Sie, dass ich die Ausgabe neu formatiert habe, um sie lesbar zu machen):
Also würden Sie in Ihrem Fall so etwas schreiben:
%Vor% Siehe meine Antworten hier und hier für mehr Details über sequence
und über Validation
allgemeiner.
Tags und Links scala validation scalaz