Quantcast
Channel: ひしだまの変更履歴
Viewing all articles
Browse latest Browse all 262

Java・Scala Tuple・AsakusaFWの類似点・相違点

$
0
0

Asakusa Framework Advent Calendar 2015の13日目です。

Scalaには「タプル」というものがあります。
複数の値を組にしてデータを保持するもの(クラス)で、メソッドから複数の値を返したい場合に便利です。
Object配列を使ったりするのとは違い、データの個数や型が規定できるのが良いです。

Javaには今のところタプルはありません。
OptionalStream APIラムダ式は導入されたけれども、「タプルが欲しい」という意見はたまに聞きます^^;

AsakusaFWでは、フローDSLで使うOperatorFactoryのメソッドの戻り値が、ちょうどタプルのような感じです。
ひとつのメソッド(処理結果)が複数のデータを出力することがあるので、それらを返すクラスとしてタプルのようなクラスが用いられます。
JJUGで発表した資料のBranchの例だと、resultという変数がタプル相当です)
ただし、AsakusaFWの場合はOperatorFactoryのメソッド毎に戻り値のクラスも生成する(メソッド名の先頭を大文字にしたクラス名になる)ので、タプルという共通クラスがあるわけではありませんが。

AsakusaFWでタプル相当の共通クラスがあってもよかったんじゃないか…とちょっと思ったんですが、タプルから値を取り出すときの名前(フィールド名)はOperatorメソッドの役割(演算子の種類)に応じて違う(ほとんどの場合はoutだが、updatedとかfoundとかmissedとか、メソッドによって異なる)ので、やはり個別に作る方が理に適っていそうです。


Viewing all articles
Browse latest Browse all 262

Trending Articles