型パラメータとミックスイン
- Mix.hx
interface A {} interface B {} class C implements A, implements B { public function new() {} } class Mix { public static function hoge(x: A) {} public static function piyo(x: B) {} }
- Hoge.hx
using Mix; class Hoge { public static function main() { var c = new C(); c.hoge(); c.piyo(); } }
こんな感じで、2つ以上のインタフェースに対してミックスインをつけることもできる。
インターフェースが型引数を持っていても、一つなら大丈夫そう。
- Mix.hx
interface A {} interface X<T> {} class C implements X<A> { public function new() {} } class Mix { public static function hoge(x: X<A>) {} }
- Hoge.hx
using Mix; class Hoge { public static function main() { var c = new C(); c.hoge(); } }
が、下は通らない。
- Mix.hx
interface A {} interface B {} interface X<T> {} class C implements X<A>, implements X<B> { public static function new() {} } class Mix { public static function hoge(x: X<A>) {} public static function piyo(x: X<B>) {} }
- Hoge.hx
using Mix; class Hoge { public static function main() { var c = new C(); c.hoge(); c.piyo(); } }
- 実行
$ haxe hoge.hxml Hoge.hx:5: characters 2-8 : C has no field hoge
piyo はあるらしい。
どうも、最後の implememt だけ有効みたいだが・・・
えー。