曖昧さの解決
Flexでコードを書いていてはまったときのメモ。
package info.o440 { class Shape { public function area() : Number { throw IllegalOperationError("..."); } } class Circle extends Shape { public override function area(): Number { ... } } class Square extends Shape { public override function area(): Number { ... } } }
というのがあって、mxmlファイルで
private function getArea( shape: Shape ) : Number { return shape.area(); }
こうしていたら、
1061: 未定義である可能性のあるメソッド area を、静的型 flash.display:Shape の参照を使用して呼び出しました。
っていうエラーが出て、小一時間も悩んでしまった。
結局、Shapeと指定しただけだと、info.o440:Shapeじゃなくてflash.display:Shapeを参照してしまっていた、という問題だった。
private function getArea( shape: info.o440.Shape ) : Number { return shape.area(); }
これで解決。エラーの説明文章はよく読もう。今回は、「静的型」というキーワードの後ろを見てなかったのが原因。
あー情けない。