是否有一种内置的方法可以将Option转换为Scalaz验证?

10

我一直在寻找一个隐式转换器,但是我找不到。很明显写一个这样的转换器非常简单,不过我在想是否错过了scalaz库中的某个转换器!

2个回答

12

Scalaz有一个将Option隐式转换为OptionW的功能,它声明了toFailuretoSuccess方法。


有没有可能提供一个例子?我尝试了导入scalaz._和Scalaz._,但仍然出现“错误:值toValidationNel不是Option的成员”的错误。 - Raymond Barlow
OptionOps不为您转换吗? - Toby
1
toValidationNel 是一个可用于验证的方法,而不是可选项。 - Daenyth
1
myOption.toSuccessNel(myError)``` - Tim

0

基本上,您有将“Some”转换为“happy path”的方法(在验证的情况下 ->成功,在Disjunction \\/的情况下),然后需要为None定义错误描述。

当我收到可选参数并且希望在未提供时引发错误时,我使用此选项。

例:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接