2012-07-07 221 views
0

今天我正在清理一些AS3代码,并且希望用switch语句替换一堆杂乱的if/else if/else语句。AS3 switch case语句中的多个变量和复杂表达式

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语句吗?

回答

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(); 
    } 
} 
+0

完美!谢谢你教我。 – okayGraphics 2012-07-07 20:27:05