новый пользователь Vavr здесь. Я пытаюсь сопоставить шаблон с кортежем параметров для выполнения операторов, если оба они являются Some, в Scala я бы сделал это с помощью:
val maybeThis: Option[String] = ???
val maybeThat: Option[String] = ???
(maybeThis, maybeThat) match {
case (Some(dis), Some(that)) => ???
case _ => ???
}
В Java я пробую этот подход:
Tuple2<Option<String>, Option<String>> tuple = new Tuple2<>(Option.of(...), Option.of(...));
return Match(tuple).of(
Case($Tuple2($Some($(instanceOf(String.class))), $Some($(instanceOf(String.class)))),
(someThis, someThat) -> methodWhichEatsTwoStrings(someThis.get(), someThat.get())),
Case($(), t -> run(() -> {
throw new NullPointerException(...);
})));
Однако с этой реализацией компилятор жалуется, что ожидал Some<Object>
вместо Some<String>
, та же ошибка возникает, если я опускаю $(instanceOf(String.class)
в шаблоне.
Я умеренно уверен, что это просто проблема правильного синтаксиса, но я изо всех сил пытаюсь найти правильную документацию. Где я не прав? Спасибо