[AS3] ()を使った式が戻り値に指定された関数を[自動フォーマット]すると [Edit]

[自動フォーマット]が、またやらかしてくれました。

つぎのフレームアクション(スクリプト001)を、[自動フォーマット]してから、[ムービープレビュー]で確認すると、答えとしていくつが[出力]されるでしょう。

スクリプト001■functionの戻り値に括弧()のある式を指定
function xTest(a:Number, b:Number, c:Number):Number {
  return (a + b) * c;
}
trace(xTest(1, 2, 3));

図001■括弧()を使った式がfunctionの戻り値に指定
FF0706051_001.gif

答えは「7」です(図002)。もちろん、意図した結果ではありません。

括弧()を使った式がreturnの後に戻り値として指定されると、[自動フォーマット]は()を消してくれます。Flash CS3 Professionalで[パブリッシュ設定]に[ActionScript 3.0]を指定している場合に再現されます。

図002■括弧()が消えた戻り値
FF0706051_002.gif

対処方法は、式の値を一旦変数に代入して、returnする戻り値にはその変数を指定することでしょう(スクリプト002)。

スクリプト002■式の値は変数に代入して戻り値にはその変数を指定
function xTest(a:Number, b:Number, c:Number):Number {
  var n:Number = (a + b) * c;
  return n;
}
trace(xTest(1, 2, 3));   // 出力: 9

[追記] 2007.09.23
スクリプトウィンドウで[ターゲット]を指定していない場合にも、[自動フォーマット]で式に用いた括弧()が消されてしまうようです(図003)。

図003■スクリプトウィンドウで[ターゲット]を指定しないと括弧()が消える
FF0706051_003.gif


FF0706051_004.gif

その他の記事