ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

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

2015-12-13 08:44:55 | PG(分散処理)

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とか、メソッドによって異なる)ので、やはり個別に作る方が理に適っていそうです。


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« JJUG CCC Fall 2015ボツネタ | トップ | DMDL EditorX機能紹介1:色 »
最新の画像もっと見る

コメントを投稿

PG(分散処理)」カテゴリの最新記事