이 자료를 이용한 간략한 강의를 목적으로 제작되었으며, 이 자료만으로는 이해가 잘 되지 않을 수 있다.
1. 변수 핸들링
변수 = Variable = 변동하는 수치 (정적이지 않고 변하는 수치)
변수명의 정의(선언)는 var 로 시작한다.
예제코드)
var i=10;
i라는 명칭의 변수에 10이라는 정수를 담는다
흔히 이렇게들 var i=10 이라고 as 2.0 때부터들 많이들 써왔다.
그러나 as 3.0 에서부터 혼동이 오기 시작하고 적응이 잘 안되는게 바로 이 변수선언이나 변수 및 펑션들에 대한 기초가 잡혀있지 않기 때문이다.
변수에는 여러가지 종류가 있다. 이 종류를 컨테이너 내지는 데이터타입, 자료형이라고 한다. 언어마다 조금씩 틀리게 부른다.
var i=10 이렇게 자료형이 없이 선언되는것을 mixed variable 이라고 표현한다. 자동감지식으로써 정수인가 문자열인가 데이터형인가, 어레이인가를 자동감지하여 선언시키는 시스템이다.
PHP등지에서 쓰이며 이러한 자동감지식 변수는 감지처리 및 오버라이딩 (재설정행위)로 인한 연산부하가 따라서 걸리게 된다.
이제 어떠한 자료형이 존재하는지 간단히 본다.
아래의 자료형은 대부분의 언어 (php, c, vb, python) 등에서 공용적으로 쓰인다.
정수형 (int) = 숫자만 담는다. 32비트제로 -20억정도부터 20억정도의 수치를 담을 수 있다.
정수형 (Number) - int 와 같다. 그러나 64비트 연산을 제공한다 소수선언은 52비트까지만 연산이 가능한것으로 알고있다. 이녀석을 흔히들 쓰는데 정수형은 c로 치자면 double float이다. 따라서 더 많은 메모리를 사용한다.
흔히 웹디들이 작은 숫자단위에 Number형을 자주 쓰는데 이것은 매우 잘못된 경우다. int 를 써야한다.
정수형 (uint) - unsigned int 를 의미한다. -20억~20억까지의 수치가 아니라, 0부터 40억까지 표현하게 된다.
따라서 20억이상의 수치를 표현하기 위해서는 uint 를 쓰는것이 좋다.
불린형 (Boolean) - True ? False 혹은 1 ? 0 을 의미한다. 스위칭등의 변수로 사용할때 많이 쓴다.
문자형 (String) - UTF-16 캐릭터셋을 기본으로 하는 문자열이 저장된다. 문자형을 삽입할때는 "" 등의 쿼테이션이 필수다.
기본은 Null 이며, UTF-8 이나 euckr 등으로 캐릭터셋을 변경시킬수 있다. (시스템 함수를 통해)
void형 (void) - c에서와 유사한 형식으로 돌고있는데, void 는 특정한 값을 담고있지 않는다. 엄밀히는 펑션의 결과를 반환하거나, 펑션을 포인팅하는데 사용된다. 클래스 등지에서 이용되며, 이때 return 문이 삽입되어야 한다.
배열형 (Array) - 간단한 자료구조를 포함하는 형식이다.
이를 배열이라고 하며, 배열에 대해서는 별도의 강의가 필요하다.
기초적인것은 10명의 이름을 하나의 변수에 서로 구분되게 넣는 경우로 보자
var test:Array = new Array('홍길동','동길홍','가나다','마바사');
이러한 형식으로 저장하고 호출할때는 test[0] 이나 test[숫자] 로 호출이 가능하다.
물론 숫자는 해당 레코드를 정확히 지칭하여야 한다.
또 간단히 설명하자면 액셀의 한 행과 같다.
액셀에서 1행의 A열, B열, C열을 이름, 전화번호, 주소 라고 설정했다치다.
그렇다면 이것은 어레이로
var test:Array = new Array();
test[0]['이름']='홍길동';
test[0]['주소']='뭐뭐뭐';
test[0]['전번']='뭐뭐뭐';
test[1]['이름']='음음음';
의 형식으로 표현이 가능하다. test[0]['이름'] 에서 앞의 0은 행번호다. 뒤에 이름은 열이름이라고 보면된다.
이를 적절히 매핑하는것을 더블포인팅 어레이 또는 어소시에이티브 어레이라고한다.
함수형 (Function) - 펑션타입의 변수다.
즉, 변하는 수가 아니라 실행되는 구문이 삽입되는것이다. {}로 실행구문을 인덴트하여야 한다.
흔히 말하는 프로그램이 이 펑션에 속한다.
오브젝트형 (Object) - 글로 설명하기가 복잡하지는 시점이다
오브젝트는 말그대로 위에 해당하는 모든것을 담게된다.
Mixed var 형식인데, 흔히들 클래스를 오브젝트라고 표현한다.
이 변수는 하나의 명칭으로 다양한 기능을 포괄시킬수있다.
var A:Object = new Object();
A.i = 10;
A.b = "스트링";
등으로 정의할수가 있을지는 모르겠다 --;; 이런식으론 사실 안해봤다.
그러나 위처럼 A라는 변수안에 i라는 추가 정수형 변수와 b 라는 문자형 변수가 혼재된다.
즉 말그대로 오브젝트를 포괄하는 형식이다.
이 형식을 대표적으로 이용하는것이 클래스라고 부른다.
클래스형 (Class) -
클래스는 기선언된 하나의 오브젝트 집합체다.
그 안에 다양한 변수와 다양한 함수를 프로그래밍하여 이를 이용할수가 있다.
위에 오브젝트에 대한 설명과 동일하다.
간단한 클래스를 예로든다.
class test {
public var a:string = "문자열 테스팅 성공입니다";
function test() {
trace("클래스가 시작되었습니다");
}
function test_start() {
trace(this.a);
}
}
이렇게 클래스를 선언한다.
클래스를 호출하는것은 간단하다. 향후 메모리관리자 쉬운 액세스를 위해 클래스는 변수형으로 주로 요청한다.
var gogogo:test = new test();
여기서 첫 :test 는 클래스명을 지칭한다. 그러나 복잡하게 갈수록.. 굳이 클래스명이 아니기도 한다는 사실;;
그 다음에 new test() 는 test 라는 클래스의 새로운 선언과 함수의 실행을 의미한다.
그렇다면 저렇게 선언을 하기만 하여도 test() 펑션이 구동한다. 따라서 바로 화면에 클래스가 시작되었습니다.
라는 문구가 표기된다.
그 다음 test_start 라는 펑션을 구동시켜보자
gogogo.test_start();
라고 실행을 하면 문자열 테스트 성공입니다 라고 출력된다.
즉 gogogo 라고 선언된 variable 이 object 타입으로써 하단부에 클래스가 돌고있는것이다.
변수가 꼭 변하는 수만이 아니라 이런형식으로 프로그래밍도 가능하다는 사실을 잊어서는 안된다 ;;
예를들어 a 라는 변수가 function 으로 +10 씩 가중시킨다고 할 경우
var a:Function = function(p:uint) {
return p+10;
};
trace ( a(10) );
이렇게 하면 a에 10을 입력하면 20이 되어 나온다
Posted by LeCieL


