Я смотрю, но я не могу найти неявный конвертер. Очевидно, было бы тривиально написать один, но мне интересно, если я пропустил один из них в библиотеке scalaz?
Есть ли встроенный способ преобразования Option в проверку достоверности?
Ответ 1
Scalaz имеет неявное преобразование Option
в OptionW
, которое объявляет методы toFailure
и toSuccess
.
Ответ 2
В основном у вас есть методы, которые преобразуют "Некоторые" в "счастливый путь" (в случае Валидации → Успех, в случае дизъюнкции \ / -), а затем вам нужно определить описание ошибки для Нет.
Я использую это, когда я получаю Необязательный параметр, и я хочу вызвать ошибку, если это не предусмотрено.
Пример:
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