とりあえず、手に入るドキュメントは読了。
オーサリングツールが公開されれば盛り上がるかな。
trigger on句はちょっとした革命。
JavaだとBean仕様に従ってアクセサメソッドを定義していたけど、
C#のように「必要な時だけ定義」して、
=演算子の代入で自動的にtrigger on句で
指定した処理が起動するようになってる。
つまり、
class Model
{
attribute hoge: Number;
}
trigger on Model.hoge = newValue
{
// 処理1
}
として、
Model{hoge: 10}
とすると、
代入する際には、triggerで指定した処理1が実行される。
いつのためなのか誰の為なのかわからないアクセサメソッドを
必ず書いていたわけで、それに比べると素敵だ。
でもTriggerが凄いのはここから先。
例えば、
trigger on new Model
{
// 処理2
}
として、
Model{}
とすると、
なんと処理2が走る。
trigger on句の後に指定されいているnew Model句は
Modelのインスタンス生成のタイミングを指定している。
これはただのアクセサメソッドがどうのこうのと言うよりも、
アスペクトに近いものと判断したほうがよさそうだ。
ただし、そうなるとややこしい。
functionやoperationとしてモデルの関数を明示的に実装するのか、
それともtriggerで暗黙的に実装するのか。
以前にSpring FrameworkのAOPでValueObjectに対して
振舞を持たせている(=ドメイン化)人がいたけれども、
そういった迷路がおぼろげながら僕の眼前にも広がるのかもしれない。