0

今日、いくつかの AS3 コードをクリーンアップしていて、乱雑な if/else if/else ステートメントの束を switch ステートメントに置き換えたいと考えています。

private const myConstant:int = 3;
private var someNumber:int = 1000;
for(var i:int=0; i < someNumber; i++){
    switch(i, myConstant){
        case 0:
            function1();
            break;
        case (i % myConstant == 0):
            function2();
            break;
        default:
            function3();
    }
}

私のプログラムにはさらに多くの case ステートメントと変数がありますが、簡潔にするために省略しています。function2()この例では、ループの 3 回目の反復ごとに呼び出したいと考えています。さて、myConstant他の場所で使用されるクラスの重要な設定なので、式にリテラルをそのまま入れることはできません3

  1. 1 つのスイッチで複数の変数 (および定数) を評価できますか?
  2. 私の例の 2 番目の case ステートメントなどの式を評価できますか?
4

1 に答える 1

2

キーワードは括弧内のswitch式を1つだけ取ります(上記のコンマ区切りの変数は1つの式に評価されません)。

キーワードは、case1つの式を評価することも想定しています。

iあなたの例では、またはmyConstantswitchステートメントに渡す必要はありません。これらの変数は、のすぐ上で宣言され、ステートメントswitch内のすべてのコードからアクセスできます。switch

おそらくあなたはこのようなものが欲しいでしょう:

for (var i:int = 0, i < someNumber; i++)
{
    switch (true)
    {
        case i == 0:
            function1();
            break;
        case i % myConstant == 0:
            function2();
            break;
        default:
            function3();
    }
}
于 2012-07-07T19:54:06.463 に答える