簡體   English   中英

Scalaz驗證

[英]Scalaz validation

我正在嘗試在我們的項目中使用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 => e.fail, x => x.liftFailNel)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM