1概要



Vavr


は、Java 8用の強力なライブラリで、Javaのラムダ式の上に構築されています。 Scala言語に触発された


Vavr

は、パターンマッチング、制御構造、データ型、永続的で不変のコレクションなどのような関数型プログラミング構造をJava言語

に追加します。

この短い記事では、いくつかのファクトリメソッドを使用して

Vavr

コレクションを作成する方法** を説明します。もしあなたがVavrに慣れていないのであれば、link:/vavr-tutorial[はじめに


2 Mavenの依存関係


Vavr

ライブラリをMavenプロジェクトに追加するには、

pom.xml

ファイルを編集して以下の依存関係を含めます。

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

このライブラリの最新版はhttps://search.maven.org/classic/

search%7Cga%7C1%7Cg%3A%22io.vavr%22%20AND%20a%3A%22vavr%22[]にありますMaven Centralリポジトリ]。[#sec3]

#


3静的ファクトリメソッド

静的インポートを使う:

static import io.vavr.API.** ;

コンストラクタ__List(…​)を使ってリストを作成することができます。

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

静的ファクトリメソッド

of(…​)を使用する代わりに、

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

あるいは:

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

の代わりに:

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

この構文上の糖は、Scala/Kotlinの構造に似ています。今後は、記事でこれらの略語を使用します。


4

Option

要素の作成


Option

要素はコレクションではありませんが、Vavrライブラリの非常に便利な構成要素になり得ます。これは、オブジェクトか

None

要素(

null

オブジェクトと同等)のどちらかを保持することを可能にする型です。

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


5

Vavr


Tuples


同様に、Javaには、順序付きペア、トリプルなどのようなタプルは付属していません。これは、

Character



String

、および

Integer

オブジェクトを保持する例です。

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


6.

Try

タイプ


Try

型は、例外を発生させるかもしれないし、発生させないかもしれない計算をモデル化するために使用することができます

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

この場合、

integer.get()

を評価すると整数オブジェクト55が得られます。

** 7.

Vavr

コレクション

**

コレクションをさまざまな方法で作成できます。

__List


sには、

List.of()、List.fill()、List.tabulate()

などを使用できます。前述のように、デフォルトのファクトリメソッドは

List.of()__で、Scalaスタイルを使用して省略できます。コンストラクタ:

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

空のリスト(

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

型とコレクションの最も一般的なコンストラクタを見ました。

section 3

で言及されている静的インポートによって提供されるシンタックスシュガーは、ライブラリ内のすべての型を簡単に作成することを可能にします。

この記事で使用されているすべてのコード・サンプルはhttps://github.com/eugenp/tutorials/tree/master/vavr[GitHubプロジェクト]にあります。