Zip kilku Eitherow z Vavr

0

Zastanawiam się jak zrobić zip 2 (lub więcej) eitherów. Mamy np. takie 2 metody:

private Either<AppError, String> getSomething() {
...
}

I drugą:

private Either<AppError, Integer> getSomeId() {
...
}

I wyniki z tych metod chciałbym przekazać do jakiejś innej metody, np.:

private void foo(String something, Integer id) {
...
}

I zastanawiam się jak to sensownie zrobić. Obie metody po lewej stronie rzucają tą samą klasą błedów. Pomijam rozwiązania typu if(getSomething.isRight()....
Jakieś pomysły?

2

flatMap i Tuple

0

Gdyby to była Scala (i chciałbyś przerwać przetwarzanie na pierwszy błędzie) to można by to zapisać

for {
  something <- getSomething()
  someId <- getSomeId()
} yield foo(something, someId)

Niestety Java nie ma powyższej konstrukcji więc trzeba to pisać na flatMapach (jest to zapis równoważny, ale mniej czytelny)

  getSomething().flatMap(something -> getSomeId().map(someId -> foo(something, someId)));

Jak chcesz błędy z obu metod to robi się to bardziej skompilowane

1 użytkowników online, w tym zalogowanych: 0, gości: 1