Я пытаюсь использовать проверку scalaz в нашем проекте и врезался в следующую ситуацию:Scalaz проверка
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")
...
}
Теперь я должен вернуться ValidationNEL содержащего возможные ошибок параметров, если таковые было, или использовать одобренный Параметры, которые можно вызвать метод:
storage.rate(username, voter, vote): Validation[String, Int]
Я знаю, я мог бы использовать | @ | для первой части, но этот код
(voterV.liftFailNel |@| voteV.liftFailNel) { (voter, rv) =>
storage.rate(username, voter, rv)
}
вернется ValidationNEL[String, Validation[String, Int]]
. Есть ли способ «сгладить» этот результат, чтобы получить ValidationNEL[String, Int]
?
работал после небольшой настройки: результат в (...) не совпадает с типом возвращаемого, так что я должен был сделать это: result.fold (е => e.fail, х => x.liftFailNel) – Digal