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;
}
}
}
我有一個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;
}
}
}
是的,你可以在循環使用前面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
。
你可以納入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來遍歷你需要迭代的任何東西。
這實際上也是我使用的策略,但它的靈活性。你能否提供一些你爲什麼建議不要使用循環標籤的原因?我對缺點感興趣:) – Marty
一般來說 - 「for counters with counters」是高程序/命令代碼的氣味。使用「gotos」(即使是標籤形式)也會產生一些非常脆弱的代碼。如果你可以和性能不是絕對重要的,我強烈建議去尋求更多的聲明性/功能性方法,並使用數組過濾器,forEach和map。它只是30年編碼的經驗;-) – robkuz
我明白了。就像我說的,我同意並使用這種方法 - 不知道我多少年經驗比你多添加任何有用的東西。 – Marty