2012-07-07 56 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

相關問題