IDL/Data Type & Format

TYPENAME 함수의 활용

이상우_IDL 2025. 5. 29. 14:47
728x90

TYPENAME 함수는 IDL 8.0 버전에서 처음 도입된 함수로서, 그 명칭에서 짐작할 수 있듯이 대상 인자 값의 자료형(Data Type)이 무엇인가를 확인하여 전달해주는 역할을 합니다. 아주 단순한 기능이지만 프로그래밍 작업에 있어서 꽤 유용하게 사용될 수 있는 기능이기도 합니다. 예를 들어 2라는 정수형 값에 대하여 이 함수를 적용하면 다음과 같이 이 값이 정수형이라는 의미로 'INT'라는 문자열을 전달받게 됩니다.

IDL> PRINT, TYPENAME(2)

INT

만약 2.0이라는 값을 인자로 주면 다음과 같이 실수형 값이라는 의미로 'FLOAT'라는 문자를 전달받게 됩니다.

IDL> PRINT, TYPENAME(2.0)

FLOAT

함수에 투입되는 인자는 값 자체일수도 있고 변수가 될 수도 있습니다. 다음과 같이 Long Integer형의 값을 변수에 담고 그 변수에 대하여 TYPENAME 함수를 적용해봅시다.

IDL> a = 3L
IDL> PRINT, TYPENAME(a)
LONG


함수에 투입되는 인자가 구조체(Structure)일 경우에는 그 구조체가 고유의 이름을 갖는 경우(기명 구조체) 또는 아닌 경우(익명 구조체)인가에 따라 결과가 다릅니다. 익명 구조체인 경우라면 다음과 같이 'ANONYMOUS'라는 문자를 전달합니다.

IDL> str = {a:1.0, b:3, c:'hahaha'}
IDL> PRINT, TYPENAME(str)
ANONYMOUS

만약 이름이 주어진 기명 구조체인 경우에는 그 이름에 해당되는 문자를 전달한다는 차이점이 있습니다.

IDL> str = {my_struct, a:1.0, b:3, c:'hahaha'}
IDL> PRINT, TYPENAME(str)
my_struct

함수에 투입되는 인자가 객체(Object)일 경우에는 그 객체의 클래스명을 문자로 전달합니다. 예를 들어 다음과 같이 모델 객체에 대하여 적용을 하면 클래스 이름인 'IDLgrModel'이라는 문자를 전달합니다.

IDL> obj = OBJ_NEW('IDLgrModel')
IDL> PRINT, TYPENAME(obj)

IDLGRMODEL

심지어는 사전에 정의되지 않은 변수에 대해서도 다음과 같이 이 함수를 적용할 수 있습니다.

IDL> PRINT, TYPENAME(b)
UNDEFINED

그러면 위와 같이 'UNDEFINED'라는 문자를 전달받게 됩니다. 참고로 이와 같이 사전에 정의되지 않은 변수에 대하여 그 실체가 없음을 확인하는데 있어서는 N_ELEMENTS 함수를 활용하여 그 값이 0이냐 아니냐 여부를 통하여 확인하는 방식도 가능합니다.

IDL> PRINT, N_ELEMENTS(a)
           0

어쨌든 프로그램 내의 특정한 부분에서 변수나 배열의 자료형(Data Type)을 확인해야 할 경우 이 TYPENAME 함수가 매우 유용하게 사용될 수 있습니다. 참고로 이와 유사한 기능을 하는 ISA라는 함수도 있습니다. 이 ISA 함수 역시 IDL 8.0 버전부터 도입된 함수인데 이 함수에 관해서도 나중에 따로 소개해보기로 하겠습니다.

 

 

* 이 내용은 지난 2011년에 올렸던 게시물의 내용을 일부 수정하여 다시 새롭게 올리는 내용입니다. 따라서 기존의 게시물은 이번 내용으로 대체되었습니다.

 

* 이 글이 도움이 되었다면 게시물에 대하여 공감 버튼(하트 모양) 클릭 및 블로그 구독도 해주시면 더 큰 힘이 됩니다. 감사합니다.

 

LIST