'for in'에 해당되는 글 2건

  1. 2008.09.20 for each in을 이용한 원소 읽기
  2. 2008.07.20 연관배열의 탐색 for in
AS3.0 Cookbook/XML2008. 9. 20. 17:16

E4X 언어 확장의 일부로 도입된 for each..in 문은 XML 객체뿐만 아니라 Object 및 Array에 대해서도 사용할 수 있습니다.

 1) for each..in 문은 객체의 속성 중 고정된 속성은 제외하고 동적 속성만 반복합니다. 
 2) 고정된 속성은 클래스 정의의 일부로 정의된 속성입니다.

for each..in 문을 사용자 정의 클래스의 인스턴스와 함께 사용하려면 dynamic 속성을 사용하여 클래스를 선언해야 합니다.

* for..in 문과는 달리 for each..in 문은 속성 이름 대신 객체의 속성 값을 반복합니다.
   - for in : 객체의 속성 이름을 반환
   - for each in : 객체의 속성 값을 반환

var menu:XML =  <menu>
<menuItem label="File" size="100kb">
<menuItem label="New" size="200kb" />
</menuItem>
<menuItem label="Help" size="300kb">
<menuItem label="About" size="400kb" />
</menuItem>
this is Text Node
</menu>;

for each ( var element:XML in menu.elements() )
{
    trace(
element.@label );
    trace(
element.@size );
}

[ 출력 결과 ]
File
100kb
Help
300kb
walk label :  File
walk size :  100kb
walk label :  New
walk size :  200kb
walk label :  Help
walk size :  300kb
walk label :  About
walk size :  400kb


* elements() 메서드는 XML의 모든 자식노드를 XMLList로 반환한다.

Posted by 버터백통
AS3.0 Cookbook/배열2008. 7. 20. 14:00

hash table은 원소의 번호가 달리없이 키로만 구성되어 있으므로 정수색인 배열처럼 for를 사용하여 원소로 접근할 수 가 없다. 따라서 키를 검사하는  for in문을 사용한다. for in문은 선택된 연관배열의 키를 특변 변수에 담아 그 이름과 값을 검색할 수 있다.

* for in 선언법
for( key  in Object ){
   // Action
}


가령 다음과 같은 도서 데이터를 검사할 수 있고 이들을 배열에 넣어서 sortOn을 하여 필요한 데이터로 정렬 또는 가공할 수 있다.
var book1:Object = { "writer":"이외수" , "title":"사람사는 마을", "cost":10000  };
var book2:Object = { "writer":"박한별" , "title":"연예계 생활", "cost":5000  };
var book3:Object = { "writer":"브루스" , "title":"men of world", "cost":18000  };
var book4:Object = { "writer":"오라일리" , "title":"cool codes", "cost":28000  };
for (var i:int=1; i<=4; i++) {
 for ( var atrb:String in this["book" + i] ) {
  trace( atrb , ":" , this["book"+i][atrb] );
 }
}


출력
cost : 10000
title : 사람사는 마을
writer : 이외수
cost : 5000
title : 연예계 생활
writer : 박한별
cost : 18000
title : men of world
writer : 브루스
cost : 28000
title : cool codes
writer : 오라일리

* for in 문은 내장된 속성까지 보여주지 않는다.

Posted by 버터백통