Sto cercando di utilizzare la convalida scalaz nel nostro progetto e ho fatto funzionare in una situazione seguente:Scalaz convalida
def rate(username: String, params: Map[String, String]): ValidationNEL[String, Int] = {
val voteV:Validation[String, RateVote] = validate(params, "vote") flatMap {v: String => RateVote(v)}
val voterV:Validation[String, Sring] = validate(params, "voter")
...
}
Ora devo tornare ValidationNEL contenente possibili errori dei parametri, se ci fossero, o l'uso convalidato parametri per chiamare il metodo:
storage.rate(username, voter, vote): Validation[String, Int]
lo so, potrei usare | @ | per la prima parte, ma questo codice
(voterV.liftFailNel |@| voteV.liftFailNel) { (voter, rv) =>
storage.rate(username, voter, rv)
}
tornerà ValidationNEL[String, Validation[String, Int]]
. C'è un modo per "appiattire" questo risultato, per ottenere il ValidationNEL[String, Int]
?
lavorato dopo poco messa a punto: portare dentro (...) non corrisponde al tipo di ritorno, così ho dovuto fare questo: result.fold (e => e.fail, x => x.liftFailNel) – Digal