使用Validation将错误串接

来源:互联网 发布:中学生网络防狼手册 编辑:程序博客网 时间:2024/06/01 20:39

源码:

sealed trait Validation[+E, +A] {/** Return `true` if this validation is success. */def isSuccess: Boolean = this match {case Success(_) => truecase Failure(_) => false}/** Return `true` if this validation is failure. */def isFailure: Boolean = !isSuccess...}final case class Success[E, A](a: A) extends Validation[E, A]final case class Failure[E, A](e: E) extends Validation[E, A]

Validation有两个case class Success和case class Failure

介于Validation,scalaZ提供ValidationOps,其提供了如下几个非常有用的方法

success[X],

successNel[X],

failure[X],

failureNel[X]

简单使用

scala> "ok".success[String]res11: scalaz.Validation[String,String] = Success(ok)


使用|@|将出错的结果粘起来

 

scala> ("event 1 ok".success[String] |@| "event 2 failed!".failure[String] |@| "event 3 failed!".failure[String]) {_ + _ + _}res15: scalaz.Unapply[scalaz.Apply,scalaz.Validation[String,String]]{type M[X] = scalaz.Validation[String,X]; type A = String}#M[String] =<span style="color:#ff0000;"> Failure(event 2 failed!event 3 failed!)</span>


 



0 0
原创粉丝点击