문제

AS3의 배열, 사전 및 객체 유형의 반복 순서를 알고 싶습니다. 또한 이러한 루프 유형 조합의 반복 순서를 변경할 수있는 요인은 무엇입니까?

예를 들어, 배열 유형에서 For-each를 사용하면 항상 첫 번째 요소에서 마지막 요소로 이동한다고 가정합니다. 사전에서는 문을 사용할 수 없으므로 For-in 루프를 사용하여 어떻게 결정됩니까?

도움이 되었습니까?

해결책

당신은 의미합니까? for (x in y) 각각의 고리 유형? AS3 사양에 따르면 루프의 경우 "ECMA-262 Edition 3 및 E4X에 정의 된 것과 동일한 구문과 의미론이 있습니다"라고 말합니다.

ECMA -262, 섹션 12.6.4 "열거 순서는 객체에 의해 정의됩니다" - 즉, 목록, 사전, 배열 등을 반복하는지 여부에 따라 달라집니다.

나는 할 것이다 희망 대부분의 컬렉션에 대한 문서는 열거 순서 (또는 주문이 정의되지 않았 음)를 명시 적으로 명시하지만 확인하지 않았다 ...

편집 : 불행히도 사양은 "속성 열거의 역학 [...]은 구현 의존적입니다." 주문을 지정하기 위해 배열 문서에서 아무것도 볼 수 없습니다. 솔직히 말하면 약간 불만족 스럽습니다 :(

다른 팁

Colin Moock의 Essential Actionscript 3.0에 명시된 바와 같이, XML 또는 XMLLIST 객체를 열거하지 않는 한 루프에서 각각의 순서는 보장되지 않습니다.

그의 책에서 콜린 무록의 말을 보려면 여기를 클릭하십시오.

논의 된대로 해결 방법이 있습니다 여기, 그러나 솔직히 주문을 보장해야한다면 정기적 인 오래된 오래된 구식을 루프에 사용하고 반복 (길이, 부장 등)을 횟수로 사용하십시오.

평가 순서는 1.0과 2.0으로 As3.0에서 변경되었으며, 평가 순서는 객체가 추가 된 순서를 기준으로 하였다. 이제 3.0에서 모든 루핑은 배열 순서를 유지합니다. 스 니펫을 시도하십시오 :

var a:Array = new Array();
a[ 1 ] = 'first';
a[ 0 ] = 'second';

for (var key:String in a) 
    trace( key + ': ' + a[ key ] );

AS3.0 및 AS1.0/2.0으로 위의 것을 시도하십시오

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top