我一直在寻找一个隐式转换器,但是我找不到。很明显写一个这样的转换器非常简单,不过我在想是否错过了scalaz库中的某个转换器!
基本上,您有将“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
toValidationNel
是一个可用于验证的方法,而不是可选项。 - DaenythmyOption.toSuccessNel(myError)```
- Tim