我今天正在清理一些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
。
答案 0 :(得分:2)
switch
关键字只在括号内使用一个表达式(上面的逗号分隔变量不会计算为一个表达式)。
case
关键字也希望评估一个表达式。
在您的示例中,没有必要将i
或myConstant
传递给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();
}
}