Vavr Списки, как и во многих функциональных программах, состоят из головы (один элемент, называемый Cons) и хвоста (другой список), можно сопоставить первые элементы (не последние, кроме как путем обращения списка в обратном порядке). ), хотя это будет более многословно, чем Scala / Haskell. Кроме того, хотя вы можете сопоставлять 3 первых элемента, вы можете ЗАПИСАТЬ только первые:
var t = Match(x).of(
Case($Cons($(), $Cons($(), $Cons($(), $()))), (a, tail) -> Tuple(a, tail.head(), x.get(2)))
);
Документация Vavr сопоставления с образцом и его ограничения :
Текущий API делает компромисс, что все шаблоны соответствуют, но
только корневые шаблоны разлагаются.
Редактировать: Если вы хотите, чтобы в списке было ровно 3 элемента, вам нужно убедиться, что хвост после третьего элемента представляет собой пустой список (называемый Nil):
var t = Match(x).of(
Case($Cons($(), $Cons($(), $Cons($(), $Nil()))), (a, tail) -> Tuple(a, tail.head(), x.get(2)))
);