좋게 말하면 Advanced Topic이지만, 사실은 알아도 별 도움은 안되는 내용을 잠깐 다루어볼까요.
아마 Flex와 ActionScript를 처음 접하시는 분들 중에는, 가변 길이인 String이 어떻게 primitive data type이 될 수 있는지 의아했던 분들이 계실 겁니다. (대부분의 객체 지향 언어에서 primitive data type들은 고정 길이지요.)
보통의 객체 지향 언어에서는 일반적으로, primitive data type은 reference가 아닌 value 그 자체로 다룹니다만, 유독 ActionScript 3.0의 경우에는 모든 데이터가 reference로 처리가 됩니다.1 즉, ActionScript는 primitive조차도 reference로 처리를 하기 때문에, 가변 길이인 String가 primitive data type이 되어도 별 문제가 없습니다. (물론, 이와 같은 경우가 아니라도, 딱히 가변 길이의 primitive가 불가능하거나 한 것은 또 아닙니다. 몇 마디로 설명하기에 다소 복잡한 문제이긴 합니다만..)
그런데, 또 primitive data type의 실제 동작을 보면, 마치 pass by reference가 아닌 pass by value처럼 보이지요. (아래는 LiveDocs에서 발췌한 예입니다.)
function passPrimitives(xParam:int, yParam:int):void
{
xParam++;
yParam++;
trace(xParam, yParam);
}
var xValue:int = 10;
var yValue:int = 15;
trace(xValue, yValue);// 10 15
passPrimitives(xValue, yValue); // 11 16
trace(xValue, yValue);// 10 15
위와 같은 동작 때문에, primitive data type은 Value로 처리되는 것이 아니냐고 생각하시는 분들이 계시겠습니다만, 이는 primitive data type에 대해서만 특별히 이와 같이 보이도록 별도의 구현이 되어있는 것이며, 실제로 primitives를 포함한 모든 인자는 pass by reference로 처리가 됩니다.
어쨌든 표면적으로는 아무런 차이가 없으므로, 이와 같은 내용을 알지 못하여도, 개발하는데 별 지장은 없을 것입니다.
Reference
- [LiveDocs] Function parameters
마치며 덧붙임
한동안 글이 뜸했지요. 얼마 전, 전원 주택으로 이사를 했는데, 접지 문제에서부터 시작해서 인터넷 회선까지, 개발하고 관련된 모든 환경이 엉망이라서, 몇 주 동안 개발을 끊(?)고 살았었습니다.
다시 조금씩 일을 손에 쥐어보곤 있습니다만, 포스팅을 자주 하게 될 지는 아직 잘 모르겠네요.
- Reference - [LiveDocs] Function parameters 참고 [본문으로]
'Adobe Flash Platform > Flex' 카테고리의 다른 글
| ActionScript 3.0의 Primitives (6) | 2010/07/18 |
|---|---|
| 프로젝트 템플릿 (15) | 2010/03/10 |
| [뉴스] Maemo용 Firefox, Flash Player 비활성화 (0) | 2010/02/05 |
| 최근 개발한 간단한 웹페이지에 대한 사후 평가 (0) | 2010/01/28 |
| Dictionary와 hasOwnProperty() (6) | 2009/12/27 |
| MXML 2009의 id 속성 (2) | 2009/12/15 |




댓글을 달아 주세요
라피르 2010/07/19 13:25 댓글주소 수정/삭제 댓글쓰기
오호홋.. 간만에 안녕하세요..^^
복날입니다~!
닭드세요~~~~~~
ps. 이사 축하드려요~~
우울하게도 물만두 먹었습니다.
축하 감사합니다. :')
좋은 내용 고맙습니다!
들러주셔서 감사합니다.
전원주택에서의 자유로움.. 부럽당
저도 그럴 줄 알았는데, 하루에 반은 집안 일에 묶여있어야 하더군요.
집사를 따로 두기 전에야, 그다지 좋은 선택은 아닌 듯.