是否有内置的方式将Option转换为scalaz验证?

时间:2012-01-19 17:03:54

标签: scala scalaz

我一直在寻找,但我找不到隐含的转换器。写一篇文章显然是微不足道的,但我想知道我是否错过了某个scalaz库中的一个!

2 个答案:

答案 0 :(得分:12)

Scalaz隐式转换为OptionOptionW,它声明了toFailuretoSuccess方法。

答案 1 :(得分:0)

基本上,您有一些方法可以将“ Some”转换为“ happy path”(对于Validation-> Success,对于Disjunction \ /-),然后需要为None定义错误描述。

当我收到一个Optional参数时,如果没有提供该参数,我会使用它。

示例:

scala> import scalaz.Scalaz._
import scalaz.Scalaz._

scala> import scalaz._
import scalaz._

scala> Some("clientId123").toSuccessNel("Client id is mandatory")
res0: scalaz.ValidationNel[String,String] = Success(clientId123)

scala> None.toSuccessNel("Client id is mandatory")
res1: scalaz.ValidationNel[String,Nothing] = Failure(NonEmpty[Client id is mandatory]) 

如果使用应用程序积累错误,则可以向最终用户提供全面的错误消息,例如:

Client id is mandatory, country is mandatory, etc