W ScalaZ, jaki jest idiomatyczny sposób konwersji Option[Validation[E, A]]
na Validation[E, Option[A]]
?Konwersja opcji [Weryfikacja [E, A]] na Walidację [E, Opcja [A]]
Na przykład w poniższym kodzie hipotetycznej:
def convert(x: Option[Validation[E, A]]): Validation[E, Option[A]] =
/* ??? */
def validateThing(thing: A): Validation[E, A] =
/* whatever */
def exampleUseCase(maybeThing: Option[Thing]): Validation[E, Option[Thing]] = {
val validated: Option[Validation[E, Thing]] = a.map(validateThing(_))
// ...
val result: Validation[E, Option[Thing]] = convert(validated)
result
}
co by realizacja convert
wyglądać w idiomatycznym ScalaZ?
Powiedziałbym, że ta konwersja nie ma dla mnie większego sensu. Jakiego wyniku byś się spodziewał, gdyby "maybeThing" brzmiało "None"? Prawdopodobnie nie udało się sprawdzić poprawności, że nie ma, jeśli nie jest żadna, to możesz wyodrębnić wartość i umieścić ją jako "pomyślny" przypadek, wtedy nie potrzebujesz 'Opcji'. – 4lex1v
'validate' i' validateThing' są hipotetyczne, tylko po to, aby pokazać kontekst miejsca, w którym taka konwersja * może * mieć miejsce. Interesuje mnie tylko to, czym będzie implementacja 'convert'. – kes
Ale aby odpowiedzieć na konkretne pytanie, czego się spodziewać, gdy 'maybeThing' is' None': udana walidacja 'None'. – kes