AS3 switch case语句中的多个变量和复杂表达式

时间:2012-07-07 18:46:39

标签: actionscript-3 switch-statement

我今天正在清理一些AS3代码,并希望用switch语句替换一堆乱七八糟的if / else if / else语句。

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()。现在,myConstant是在其他地方使用的类的重要设置,因此我不能只在表达式中放置文字3

  1. 我可以在一个交换机中评估多个变量(和常量)吗?
  2. 我可以在我的示例中评估表达式,例如第二个case语句吗?

1 个答案:

答案 0 :(得分:2)

switch关键字只在括号内使用一个表达式(上面的逗号分隔变量不会计算为一个表达式)。

case关键字也希望评估一个表达式。

在您的示例中,没有必要将imyConstant传递给switch语句。这些变量在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();
    }
}