2013-04-03 75 views
2

我有一個herapchery的循環,想要退出所有的父循環,做AS3支持標籤,就像我們在PHP中有他們?是否支持循環標籤?

for(var i:int=0;i<100;i++) 
{ 
    for(var j:int=0;j<100;j++) 
    { 
     if(j == 15){ 

      i = 99; 
      break; 

     } 
    } 
} 

回答

5

是的,你可以在循環使用前面label:這樣的:

// Label this loop 'outer'. 
outer: for(var i:int = 0; i < 100; i++) 
{ 
    inner: for(var j:int = 0; j < 100; j++) 
    { 
     if(j === 15) 
     { 
      // Break the outer loop. 
      break outer; 
     } 
    } 
} 

這也適用於continue

0

你可以納入break_condition進入for循環以及

var outer_break = false; 
var inner_break = false; 
for(var i = 0; i < 100 && !outer_break; i++) { 
    for(var j = 0; j < 100 && !inner_break;j++) { 
     if (some_condition) inner_break = true; 
    } 
} 

我會建議不要使用標籤(太多太多轉到)在這裏,我也強烈建議不要for循環在所有使用。而是使用foreach來遍歷你需要迭代的任何東西。

+0

這實際上也是我使用的策略,但它的靈活性。你能否提供一些你爲什麼建議不要使用循環標籤的原因?我對缺點感興趣:) – Marty

+0

一般來說 - 「for counters with counters」是高程序/命令代碼的氣味。使用「gotos」(即使是標籤形式)也會產生一些非常脆弱的代碼。如果你可以和性能不是絕對重要的,我強烈建議去尋求更多的聲明性/功能性方法,並使用數組過濾器,forEach和map。它只是30年編碼的經驗;-) – robkuz

+0

我明白了。就像我說的,我同意並使用這種方法 - 不知道我多少年經驗比你多添加任何有用的東西。 – Marty

相關問題