ScalaZではOption[Validation[E, A]]
をValidation[E, Option[A]]
に変換する慣用方法は何ですか?例えばオプション[検証[E、A]]を検証[E、オプション[A]]に変換する
、以下の仮定のコードで:
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
}
convert
の実装は、慣用的なScalaZのように何を見ますか?
私はこの変換が私にはあまり意味がないと言います。 'maybeThing'が' None'ならば、どんな結果が期待できますか?おそらく検証に失敗したかもしれません。もしそれがnoneでなければ、値を抽出し、成功した場合には 'Option'は必要ありません。 – 4lex1v
'validate'と' validateThing'は仮説ですが、そのような変換*が起こるかもしれない場所のコンテキストを表示するだけです。私は 'convert'の実装が何であるかだけに興味があります。 – kes
しかし、 'maybeThing'が' None'のときに何を期待するかという特定の質問に答えるには、 'None'の検証に成功しました。 – kes