액션스크립트의 데이터 타입

액션스크립트의 데이터 타입

액션스크립트 2.0으로 오면서 정적 데이터 형 (static datatype)을 지원하게 되었습니다. 정적 데이터 형을 지원한다는 말은 변수 등을 선언할 때 그 데이터 형을 미리 정해 놓고, 다른 형의 데이터가 할당되는 경우 컴파일 타임에 에러를 발생하여 프로그래머에게 알려주는 것을 의미합니다. 이런 정적 데이터 형을 언어가 지원하는 경우 ,프로그래머는 실수로 자신이 선언한 변수에 원하지 않는 값이 할당되는 것을 미리 방지해 주므로 ,매우 편리하고, 에러가 없는 프로그램을 만들어 주는 데 도움을 줍니다. 기존의 액션스크립트 1.0의 경우에는 이런 정적 데이터 형을 지원하지 않았기 때문에, 변수 하나를 선언하고, 문자열이나 숫자를 번갈아 가며 저장해서 쓰곤 했는데요, 그러다가 에러가 발생하면, 어디서 발생했는지 찾기 힘든 경우가 많았습니다만, 이제는 그런 에러를 컴파일 할 때 미리 알 수 있게 되어 매우 편리해졌습니다.

먼저 액션스크립트에서 지원하고 있는 데이터 타입에는 어떤 것들이 있는지 살펴보죠.

  • String
  • Number
  • Boolean
  • null and nudefined
  • Array
  • MovieClip
  • Object

그럼 이제, 액션스크립트 2.0에서 데이터 형 검사가 이루어지는 대상에 대해 알아보죠. 데이터 형 검사가 이루어지는 대상에는 다음의 4가지가 있습니다.

  • 변수 (variable)
  • 속성 (property)
  • 함수나 메소드의 인자 (parameter)
  • 함수나 메소드의 반환 값 (return value)

후위 콜론 표기법 (post-colon syntax)라고 불리는 표기법으로 데이터 형을 선언하는데요 방법은 다음과 같습니다.

var variableOrPropertyName : datatype;
function methodName(param1Name : param1Type,
                    param2Name : param2Tyep) : returnType
{
  // …
}

변수의 이름 뒤에 콜론을 붙이고, 그 데이터 형을 써 주는 겁니다. 이렇게 변수의 데이터 형을 선언하고나면, 이 변수가 삭제될 때까지 그 형은 변하지 않게 됩니다. 여기서 한 가지, 언급하고 넘어가야 할 부분이 있는데요, 기존의 액션스크립트 1.0의 경우 객체가 인스턴스화 된 이후에 그 객체에 속성을 추가 할 수가 있었는데요, 액선스크립트 2.0에서는 일단 어떤 객체가 그 데이터 형이 명시적으로 선언되면, 나중에 인스턴스화 되었을 때 새로이 속성들을 추가할 수가 없다는 것입니다. 즉 어떤 객체에 속성을 추가하고 싶다면, 그 클래스를 정의한 부분으로 찾아가서 그 곳에서 해 주어야 한다는 것이죠. 이렇게 제한을 둠으로써, 형 검사를 할 때, 그 정의에 없는 속성이나 함수에 접근하려는 시도가 있으면 프로그래머에게 오류가 있다고 알려주게 되는 거죠. 액션 스크립트 1.0의 경우처럼, 동적으로 런타임에 추가되는 속성이나 함수들을 허용하게 되면, 컴파일러의 입장에서는 앞에서 실시간으로 추가된 녀석인지를 검사하는 것이 용이하지 않기 때문에, 비록 그 정의에 없어도 오류가 있다고 알려줄 수가 없게 됩니다. 좀 더 엄격하게 관리함으로써 오류의 발생 확률을 그만큼 낮춰주는 역할을 하는 거죠.

그러므로 귀찮다고, 변수나 속성의 형 선언을 게을리 하지 않기를 바랍니다. 약간 번거로운 것쯤이야 금방 익숙해 질 수 있고, 나아가 더 많은 시간을 빼앗게 될 지 모르는 오류를 미리 차단함으로써 장기적으로 개발 시간을 훨씬 단축시켜줄 수 있으니까요.

참고문헌

  • Essential ActionScript 2.0, Colin Moock, O’Reilly