簡體   English   中英

映射Scalaz驗證失敗

[英]Map on Scalaz Validation failure

import scalaz._
import Scalaz._

"abc".parseInt

這將返回Validation[NumberFormatException, Int] 有沒有辦法可以在失敗方面應用一個函數(比如toString )來獲得Validation[String, Int]

MAB[M[_,_], A, B]上定義了一對方法<-::-> MAB[M[_,_], A, B]它們映射在任何M[A, B]的左側和右側M[A, B]只要有一個Bifunctor[M] Validation恰好是一個bifunctor,所以你可以這樣做:

((_:NumberFormatException).toString) <-: "123".parseInt

Scala的類型推斷通常從左向右流動,因此實際上更短:

"123".parseInt.<-:(_.toString)

並且需要較少的注釋。

FailProjection上有一個仿函數。 所以你可以做到

v.fail.map(f).validation

(無法輸入FailProjection,驗證以擺脫它)

另外

v.fold(f(_).failure, _.success)

兩者都有點冗長。 也許更熟悉scalaz的人可以想出更好的東西

暫無
暫無

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

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