加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scalaz验证

发布时间:2020-12-16 18:40:13 所属栏目:安全 来源:网络整理
导读:我正在尝试在我们的项目中使用 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)}
我正在尝试在我们的项目中使用 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,rv)
}

将返回ValidationNEL [String,Validation [String,Int]].有没有办法“扁平化”这个结果,以获得ValidationNEL [String,Int]?

解决方法

你可以用折叠来平整结果.

result.fold(e => e.fail,x => x.liftFailNel)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读