2012-01-11 12 views
0

私は以下のAS3コード内の変数ARR1の複数の変数宣言のためのFlash Builderの警告メッセージが出てい:AS3コードでFlash Builder警告メッセージを手動で抑制する方法はありますか?

if (var1 == var2) { 
    var arr1:Array = new Array(100); 
    <some code> 
} else { 
    var arr1:Array = new Array(200); 
    <some other code> 
} 

私はさらにいくつかの他の/ if文でこの警告を排除することができますが、コードは正常に動作します警告が受け入れられれば、なぜ私は複雑さを加えなければならないのか分かりません。あなたが違った考えをしても、他の人の意見を聞きたいですか?

警告は正常に保存されていると仮定して、Flash Builderで手動で警告を抑制する方法はありますか?つまり、この例の警告のみです。その他の警告は引き続き表示する必要があります。

たとえば、Matlabでは、問題の行にコメントとして特別なコードを配置することができ、そのコード行に関連する警告は表示されません。 Flash Builder 4.6で利用可能なものは何ですか?

+0

ActionScriptは 'if'ブロックスコープを持っていません。 'arr1'という名前の変数が1つしかありません。実際に宣言されていますが、スコープ全体が実行される前に宣言をifの外側に数行移動させるのはなぜですか? –

答えて

3

ActionScriptは変数ホイストを使用します。つまり、すべての変数宣言が関数の先頭に移動するため、コンパイラは同じ変数の2つの宣言を参照します。

それは使用だ前に変数を宣言する場合であっても、それは動作します...

例えばこれらの例は、AS3ではまだ有効です。

// more logical and preffered one 
var arr1:Array; 
if (var1 == var2) { 
    arr1 = new Array(100); 
    <some code> 
} else { 
    arr1 = new Array(200); 
    <some other code> 
} 


if (var1 == var2) { 
    var arr1:Array = new Array(100); 
    <some code> 
} else { 
    arr1 = new Array(200); 
    <some other code> 
} 


if (var1 == var2) { 
    arr1 = new Array(100); 
    <some code> 
} else { 
    var arr1:Array = new Array(200); 
    <some other code> 
} 


if (var1 == var2) { 
    arr1 = new Array(100); 
    <some code> 
} else { 
    arr1 = new Array(200); 
    <some other code> 
} 
var arr1:Array; 
+0

驚くばかりです。あなたが提供した最初の例は私のために働くでしょう。私は配列の長さが宣言ステートメントの*外部*で初期化できることに気づいていませんでした。ありがとうPatrick! – ggkmath

関連する問題