Métodos de fábrica de coleta para Vavr

Métodos de fábrica de coleta para Vavr

1. Visão geral

Vavr é uma biblioteca poderosa para Java 8+, construída sobre expressões lambda Java. Inspirado na linguagem Scala,Vavr adds functional programming constructs to the Java language, como correspondência de padrões, estruturas de controle, tipos de dados, coleções persistentes e imutáveis ​​e muito mais.

Neste breve artigo, mostraremoshow to use some of the factory methods to create Vavr collections. Se você for novo no Vavr, pode começar comthis introductory tutorial, que por sua vez contém referências a outros artigos úteis.

2. Dependência do Maven

Para adicionar a bibliotecaVavr ao seu projeto Maven, edite o arquivopom.xml para incluir a seguinte dependência:


    io.vavr
    vavr
    0.9.1

Você pode encontrar a versão mais recente da biblioteca emhttps://search.maven.org/classic/search%7Cga%7C1%7Cg%3A%22io.vavr%22%20AND%20a%3A%22vavr%22[Maven Central repository].[#sec3] #

3. Métodos Estáticos de Fábrica

Usando a importação estática:

static import io.vavr.API.*;

podemos criar uma lista usando o construtorList(…):

List numbers = List(1,2,3);

em vez de usar o método de fábrica estáticoof(…):

List numbers = List.of(1,2,3);

ou também:

Tuple t = Tuple('a', 3);

ao invés de:

Tuple t = Tuple.of('a', 3);

Este açúcar sintático é semelhante às construções em Scala / Kotlin. De agora em diante, usaremos essas abreviações no artigo.

4. Criação de elementosOption

Os elementosOption não são coleções, mas podem ser construções muito úteis da biblioteca Vavr. É um tipo queallows us to hold either an object or a None element (o equivalente a um objetonull):

Option none = None();
Option some = Some(1);

5. VavrTuples

Da mesma forma, Java não vem com tuplas, como pares ordenados, triplos, etc. EmVavr podemosdefine a Tuple that holds up to eight objects of different types. Aqui está um exemplo que contém um objetoCharacter, umStringe umInteger:

Tuple3 tuple
  = Tuple('a', "chain", 2);

6. O tipoTry

O tipoTry pode ser usado paramodel computations that may or may not raise an exception:

Try integer
  = Success(55);
Try failure
  = Failure(new Exception("Exception X encapsulated here"));

Neste caso, se avaliarmosinteger.get(), obteremos o objeto inteiro 55. Se avaliarmosfailure.get(), uma exceção será lançada.

7. Vavr coleções

Podemos criar coleções de várias maneiras diferentes. ParaLists, podemos usarList.of(), List.fill(), List.tabulate(), etc. Conforme mencionado antes, o método de fábrica padrão éList.of() que pode ser abreviado usando o construtor de estilo Scala:

List list = List(1, 2, 3, 4, 5);

Também podemos criar uma lista vazia (chamada de objetoNil emVavr):

List()

De forma análoga, podemos criar outros tipos deCollections:

Array arr = Array(1, 2, 3, 4, 5);
Stream stm = Stream(1, 2, 3, 4, 5);
Vector vec = Vector(1, 2, 3, 4, 5);

8. Conclusão

Vimos os construtores mais comuns para os tipos e coleçõesVavr. O açúcar sintático fornecido pelas importações estáticas mencionadas emsection 3 facilita a criação de todos os tipos na biblioteca.

Você pode encontrar todos os exemplos de código usados ​​neste artigo emGitHub project.