2013-04-03 2 views
2

나는 루프의 herarchery 있고 모든 부모 루프를 종료하려면 우리가 PHP에서 그들을 가지고 같은 AS3 지원 레이블을합니까?as3은 루프 레이블을 지원합니까?

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

      i = 99; 
      break; 

     } 
    } 
} 

답변

5

예,이 같은 루프 앞에 label:을 사용할 수 있습니다 :이 또한 continue 작동

// 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; 
     } 
    } 
} 

합니다.

0

는 현재뿐만 아니라

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 루프로 break_condition를 통합 할 수 있고 또한 강력하게 모든 루프를 사용하지 않는 것이 좋습니다 것입니다. 대신 foreach를 사용하여 반복 할 필요가있는 모든 항목을 반복합니다.

+0

이것은 실제로 내가 사용하는 전략이지만 유연성을위한 것입니다. 루프에 라벨을 사용하지 말라고 권장 한 이유 몇 가지를 제시 할 수 있습니까? 나는 단점에 관심이있다. – Marty

+0

일반적으로 "카운터가있는 for 루프"는 절차 상/명령 적 코드의 냄새 다. "gotos"를 사용하면 레이블의 형태로도 매우 부서지기 쉬운 코드가됩니다. 만약 당신이 할 수 있고 성능이 절대적으로 중요하지 않다면 더 많은 선언적/기능적 접근법을 사용하고 배열 필터, forEach 및 map을 사용하는 것이 좋습니다. 그것의 간단하게 30 년의 코딩의 경험 ;-) – robkuz

+0

나는 본다. 내가 말했듯이, 나는이 방법에 동의하고 이것을 사용합니다. 당신이 유용하다고 덧붙이는 것보다 오랜 세월을 덜 경험했음을 암시하는 방법이 확실하지 않습니다. – Marty

관련 문제