Asakusa Framework Advent Calendar 2015の13日目です。
Scalaには「タプル」というものがあります。
複数の値を組にしてデータを保持するもの(クラス)で、メソッドから複数の値を返したい場合に便利です。
Object配列を使ったりするのとは違い、データの個数や型が規定できるのが良いです。
Javaには今のところタプルはありません。
OptionalやStream APIやラムダ式は導入されたけれども、「タプルが欲しい」という意見はたまに聞きます^^;
AsakusaFWでは、フローDSLで使うOperatorFactoryのメソッドの戻り値が、ちょうどタプルのような感じです。
ひとつのメソッド(処理結果)が複数のデータを出力することがあるので、それらを返すクラスとしてタプルのようなクラスが用いられます。
(JJUGで発表した資料のBranchの例だと、resultという変数がタプル相当です)
ただし、AsakusaFWの場合はOperatorFactoryのメソッド毎に戻り値のクラスも生成する(メソッド名の先頭を大文字にしたクラス名になる)ので、タプルという共通クラスがあるわけではありませんが。
AsakusaFWでタプル相当の共通クラスがあってもよかったんじゃないか…とちょっと思ったんですが、タプルから値を取り出すときの名前(フィールド名)はOperatorメソッドの役割(演算子の種類)に応じて違う(ほとんどの場合はoutだが、updatedとかfoundとかmissedとか、メソッドによって異なる)ので、やはり個別に作る方が理に適っていそうです。
※コメント投稿者のブログIDはブログ作成者のみに通知されます