1. 개요

Vavr 은 Java 람다 식 위에 구축된 Java 8+용 강력한 라이브러리입니다. Scala 언어에서 영감을 받은 Vavr 는 패턴 일치, 제어 구조, 데이터 유형, 영구 및 불변 컬렉션 등과 같은 기능적 프로그래밍 구조를 Java 언어 에 추가합니다.

이 짧은 기사에서는 몇 가지 팩토리 메서드를 사용하여 Vavr 컬렉션 을 만드는 방법을 보여줍니다 . Vavr을 처음 사용 하는 경우 다른 유용한 문서에 대한 참조가 포함된 이 소개 사용방법(예제) 로 시작할 수 있습니다.

2. 메이븐 의존성

Maven 프로젝트에 Vavr 라이브러리 를 추가하려면 다음 의존성을 포함하도록 pom.xml 파일을 편집합니다.

<dependency>
    <groupId>io.vavr</groupId>
    <artifactId>vavr</artifactId>
    <version>0.9.1</version>
</dependency>

Maven Central 저장소 에서 최신 버전의 라이브러리를 찾을 수 있습니다 .

3. 정적 팩토리 메소드

정적 가져오기 사용:

static import io.vavr.API.*;

생성자 List(…) 를 사용하여 List을 만들 수 있습니다 .

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

(…) 의 정적 팩토리 메서드를 사용하는 대신 :

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

또는 또한:

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

대신에:

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

이 구문 설탕은 Scala/Kotlin의 구문과 유사합니다. 이제부터 기사에서 이러한 약어를 사용합니다.

4. 옵션 요소 생성

Option 요소는 컬렉션 이 아니지만 Vavr 라이브러리의 매우 유용한 구성이 될 수 있습니다. 객체 또는 None 요소 ( null 객체 와 동일)를 보유할 수 있는 유형입니다 .

Option<Integer> none = None();
Option<Integer> some = Some(1);

5. Vavr 튜플

마찬가지로 Java에는 순서쌍, 트리플 등과 같은 튜플이 없습니다. Vavr 에서는 서로 다른 유형의 객체를 최대 8개까지 포함하는 튜플을 정의 할 수 있습니다 . 다음은 Character , StringInteger 개체를 포함하는 예입니다.

Tuple3<Character, String, Integer> tuple
  = Tuple('a', "chain", 2);

6. 시도 유형

Try 유형은 예외를 발생시키거나 발생시키지 않을 수 있는 계산을 모델링하는 데 사용할 있습니다 .

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

이 경우 integer.get() 을 평가하면 정수 객체 55를 얻게 됩니다 . failure.get() 을 평가 하면 예외가 발생합니다.

7. Vavr 컬렉션

다양한 방법으로 컬렉션을 만들 수 있습니다. List 의 경우 List.of(), List.fill(), List.tabulate() 등을 사용할 수 있습니다 . 앞에서 언급했듯이 기본 팩터리 메서드는 Scala 스타일 생성자를 사용하여 축약할 수 있는 List.of() 입니다. :

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

또한 빈 List을 만들 수도 있습니다( Vavr 에서는 Nil 객체 라고 함 ).

List()

유사한 방식으로 다른 종류의 Collection 을 만들 수 있습니다 .

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. 결론

우리는 Vavr 유형 및 컬렉션 에 대한 가장 일반적인 생성자를 보았습니다 . 섹션 3 에서 언급한 정적 가져오기에서 제공하는 구문 설탕 을 사용하면 라이브러리의 모든 유형을 쉽게 만들 수 있습니다.

GitHub 프로젝트 에서 이 문서에 사용된 모든 코드 샘플을 찾을 수 있습니다 .

Generic footer banner