您的位置:首页 > 其它

使用Validation将错误串接

2015-08-20 16:21 387 查看
源码:

sealed trait Validation[+E, +A] {
/** Return `true` if this validation is success. */
def isSuccess: Boolean = this match {
case Success(_) => true
case 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 faile
d!event 3 failed!)</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: