IDL 8.3 : DICTIONARY

IDL 8.3이 나오면서 생긴 추가 기능 중에 DICTIONARY라는 데이터 타입이 있습니다. 8.0에서 생겼던 HASH와 LIST에 이어서 나오는 새로운 데이터 타입입니다.  DICTIONARY는 특히 HASH와의 비교를 통해서 새로 등장한 이유를 알 수 있습니다.

예전에 쓰던 HASH의 경우 즐겨 사용하기에는 많은 문제들이 있었습니다. 기본적으로 주어지는 STRUCTURE보다 형변환에 있어서 자유로웠던 HASH는, 대신 KEY를 통해서 값을 가져오는 것에 어려움이 있었습니다. 여기에는 HASH의 경우 문자열과 숫자를 모두 KEY로 가져올 수 있었던 점 때문에 생긴 문제였죠. 그런 이유로 저의 경우로 따지자면, HASH보다는 STRUCTURE에 POINT를 섞어서 이용하는 경우가 많았습니다. HASH에서 주어진 키의 값을 받는 a[‘name’]의 모양보다 *(a.name)이 쓰기가 편했기 때문이죠. 물론 HASH는 숫자를 KEY로 넣어서 배열과 같이 이용할 수 있다는 장점은 생각하셨으면 좋겠습니다.

8.3부터는 이러한 문제로 고민이 조금은 줄어들지도 모르겠습니다. 이번에 등장한 DICTIONARY는 HASH와 STRUCTURE의 장점이 잘 살아난 느낌이 듭니다. 이것은 DICTIONARY가 KEY로 숫자를 받지 않도록 했기 때문에 생깁니다. 우선 DICTIONARY를 생성하고 몇가지의 방법으로 KEY를 이용해 VALUE를 얻어보겠습니다.

위에서 PRINT의 결과는 모두 1.00000이 나옵니다. 위의 세 방식 모두가 KEY값을 통해서 VALUE를 얻는 방법입니다. 맨 위의 방법은 HASH에서 이용하던 방법입니다. 두 번째와 세 번째는 STRUCTURE에서 이용한 방법입니다. 동일한 내용을 같이 표현한 이유는 대소문자의 구분이 없다는 점을 보여주기 위한 설명입니다.

또한 주어진 DICTIONARY에 대해서 새로운 KEY를 등록하는 방법과 VALUE값을 변경하는 것도 다음과 같이 이용할 수 있습니다.

PRINT의 결과는 0   1   2로 출력이되며, 새로운 KEY가 제대로 등록이 된 것을 확인할 수 있습니다. 이렇게 상당히 간편하게 VALUE를 넣을 수 있습니다.

지금까지 DICTIONARY에 대해서 간단히 알아보았습니다. 새로 등장한 데이터 타입인 DICTIONARY는 상당히 유용하게 이용이 가능할 것 같습니다. 또다른 데이터 타입으로 ORDEREDHASH도 생겼는데, 이는 다음에 다시 확인하도록 하겠습니다.

감사합니다.