Asakusa Framework Advent Calendar 2018の2日目です。
今日はAsakusaFW 0.10.1で導入された新機能、Convert演算子の仕様変更の話です。
Convert演算子は入力のデータモデルを別のデータモデルに変換する処理を記述するものですが、出力はoutとoriginalの2種類あります。outは変換後のデータモデル、originalは変換前のデータモデルです。
厳密には、originalは入力データをそのまま出力するのではなく、メソッド内で入力データに対して変更(値の代入)をすると、それが反映されます。(つまりUpdate演算子も兼ねる、というイメージです)
しかし個人的には、originalは全く使ったことがありません^^;
いつも常に必ずstop演算子に渡していました。
MyConvert convert = operator.myConvert(in); core.stop(convert.original); Source<Model2> converted = convert.out;
AsakusaFWの思想としては、出力されたものは明示的に処理する(別の処理への入力とする(結線する))ことになっているのです。
それが、0.10.1から、Convertのoriginalについてはstop演算子に渡さなくても良くなりました!
これで以下のようにすっきりと書くことが出来ます。
Source<Model2> converted = operator.myConvert(in).out;
なお、省略できるのはConvertのoriginalだけです。
MasterCheckやMasterJoinUpdate等のmissedは省略できません。
これについては、missedの方を後続処理に渡すことも多々あるので、省略しない方が良いと思います。