프로그래밍/ActionScript
[AS3] 배열 복제하기(Array Cloning) - concat() 메소드 활용
카이(KAi)
2010. 2. 24. 00:07
반응형
액션스크립트 3.0(ActionScript 3.0)에서는 기본적으로 객체는 참조(Reference)로 값을 받게 됩니다. 그래서 이점을 간과하면 예상치 못한 결과를 얻게 되죠!
아래의 예에서, 배열 A 에 B 를 넣고, 배열 B 에 새로운 값을 추가했는데 배열 A 도 변화가 된걸 알 수 있습니다. 이것이 배열 B 가 배열 A 를 참조하고 있기 때문이죠.
var A:Array = new Array(); A.push(1); var B:Array; B = A; B.push(2); trace(A);// 결과: 1, 2 trace(B);// 결과: 1, 2
이런 문제 때문에 객체(Object)의 경우 따로 clone() 함수를 만들어서 쓰기도 하는데, 배열의 경우엔 따로 함수를 만들지 않고도 concat() 함수를 쓰면 간단하게 클론을 만든것과 같은 결과를 얻을 수 있습니다. (concat() 함수는 이미 Array 객체의 기본 메소드로 지원하고 있습니다.)
var A:Array = new Array(); A.push(1); var B:Array; B = A.concat();// .concat() 메소드 호출 B.push(2); trace(A);// 결과: 1 trace(B);// 결과: 1, 2
concat() 메소드는 인자로 받은 배열을 합쳐 새로운 배열로 만들어 주는데, concat() 메소드에 아무런 인자를 주지 않게 되면 클론을 만든것과 같은 결과를 얻을 수 있습니다. :)
[fin.]
참고 사이트
- ActionScript3.0 Reference - Array#concat
http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Array.html#concat()
반응형