Platform: All
Version: MX 2004
問題
forステートメントの初期設定の式に厳密な型指定を行ったとき、いくつかの問題が生じます。
スクリプト001■forステートメントの初期設定の式に厳密な型指定
for (var i:Number = 0; i<5; i++) { // 変数iをNumber型で指定
}
|
変数iをNumber型で指定
[1] [自動フォーマット]を実行すると、型指定が消滅します。
図001■[自動フォーマット]で型指定が消滅
|
↓
|
|
変数iのNumber型指定が消滅
[2] 指定した型チェックが、行われません。
以下のようにString型で指定した変数iに数値を代入しても、[シンタックスチェック]や[パブリッシュ]時にエラーが発生しません。
スクリプト002■指定した型と異なるデータを代入
for (var i:String = 0; i<5; i++) { // String型で指定した変数iに数値を代入
}
|
String型で指定た変数iに数値を代入してもエラーは発生しない
原因
明らかに、バグと考えられます。
型指定が消滅する問題は、名前のない関数の戻り値についても確認されています。
スクリプト003■名前のない関数の戻り値に型指定
var myFunc:Function = function ():Number {
return 1;
};
|
[自動フォーマット]で型指定が消滅する
型指定をしてもそのチェックが行われないという問題は、厳密な型指定そのものに対する信頼を損なう点で重大でしょう。
対処法
forステートメントの外で変数宣言および型指定をするのが、当面確実な方法です。そうすれば、[自動フォーマット]を実行しても型指定は消滅せず、[シンタックスチェック]または[パブリッシュ]時に型チェックが行われます。
スクリプト004■forステートメントの外で変数を宣言
var i:Number; // forステートメントの外で変数とその型を宣言
for (i=0; i<5; i++) {
}
|
[自動フォーマット]や[シンタックスチェック]、[パブリッシュ]が正しく実行できる
_____
作成者: 野中文雄
作成日: 2004年10月9日