Add-on SDKでのクラスの作り方。
traitsというモジュールを使えば良い。mix-inも出来るし、名前が衝突したら例外を出したり(compose, 出したくない時はoverride)、mix-in時に作らなければいけないプロパティを指定出来たりと(required、C#のinterfaceに近い)かなり高機能のようだ。
が、ドキュメントの整備が追いついていないようで、下のドキュメントの中のサンプルコードも所々バグがあり苦労した。
結局、実際に動いているソースを見るのが一番参考になった。ソースコードがちゃんとあるのがありがたい。下のリンクはWidegetクラスを生成する辺り。
完全に動かしたサンプルはこちら、ドキュメントと違う所は bug のマークを付けている(tests/の下に放り込んで実行、テストもかなり綺麗に書ける)。
- Listクラスを作る
- そいつに範囲制限をつけたRangeクラスをMix-inで作る
- 簡単なEnumerableモジュールを書いたり
となかなか楽しいサンプルだった。