Существует ли встроенный способ преобразования Option в проверку скаляза? - PullRequest
10 голосов
/ 19 января 2012

Я искал, но не могу найти неявный конвертер. Очевидно, было бы тривиально написать один, но мне интересно, пропустил ли я один из них в библиотеке скалязов!

Ответы [ 2 ]

12 голосов
/ 19 января 2012

Scalaz имеет неявное преобразование Option в OptionW, которое объявляет методы toFailure и toSuccess.

0 голосов
/ 12 мая 2019

В основном у вас есть методы, которые преобразуют «Некоторые» в «счастливый путь» (в случае Валидации -> Успех, в случае дизъюнкции \ / -), а затем вам необходимо определить описание ошибки для 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
...