我正在尝试在我们的项目中使用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]
?