0

今天在清理一些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 语句之类的表达式吗?
4

1 回答 1

2

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

case关键字还期望评估一个表达式。

在您的示例中,没有必要将其中一个i或传递myConstant到 switch 语句中。这些 var 直接在 上面声明,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 回答