Bearbeitung einer Liste von Scalaz6 Validation

8

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?

    
Edmondo1984 09.01.2013, 10:46
quelle

1 Antwort

9

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:

%Vor%

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):

%Vor%

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.

    
Travis Brown 09.01.2013 11:55
quelle

Tags und Links