7

いくつかのVavr Each があり、これらのそれぞれの値を使用して関数を呼び出したいと考えています。例えば:Right

Either<MyError, String> either1 = ..
Either<MyError, String> either2 = ..
Either<MyError, String> either3 = ..

Either<MyError, String>> methodRequiringAllInputs(String, String, String) { 
..
}

もちろん、次のようなこともできます。

either1.flatMap { value1 ->
    either2.flatMap { value2 ->
        either3.flatMap { value3 ->
            methodRequiringAllInputs(value1, value2, value3);
        }
    }
}

しかし、これは非常に醜いです。他の言語では、do 記法や内包表記のようなものを使用して、構造を平坦化できます。Vavr には、次のことを可能にするアプリケーション ファンクターであるValidationの概念があることを知っています。

Validation<MyError, String> validation1 = ..
Validation<MyError, String> validation2 = ..
Validation<MyError, String> validation3 = ..

Validation.combine(validation1, validation2, validation3)
          .ap((validationValue1,validationValue2,validationValue3) -> .. );  

これははるかに優れています。

flatMap私の質問は、ネストされた構造を回避するために、Either の Vavr に同様のものが存在するかどうかです。を に変換したくないことに注意してください。EitherValidation

4

1 に答える 1