본문으로 바로가기

MAP 데이터 타입

category Programming/LabVIEW 2021. 8. 6. 15:17
반응형

Map 데이터 타입

지난 글에 이어서, 오늘은 랩뷰 2019에서부터 지원하기 시작한 또 다른 데이터 타입인 MAP 데이터 타입이 대해 알아보자. 이번에도 맵 데이터 타입의 구성을 알아보기 위해, 블록 다이어그램에 맵 데이터 타입 상수 오브젝트를 하나 추가해보자.

맵 타입 상수는 함수 팔레트에서 Programming > Collection > Map > Map Constant를 선택하면 추가할 수 있다.

맵 타입의 데이터는 위 그림에서 볼 수 있듯이, 각각의 와 거기에 대응되는 데이터의 형태로 구성된다. 셋 타입 데이터와 마찬가지로, 상수의 내부 원소 값을 직접 정의할 수는 없고, 키 또는 데이터의 타입만 변경할 수 있다.

그 말은 곧, 맵 타입 데이터 역시 특정 함수를 통해 데이터를 정의할 수 있다는 의미이다. 이 때 사용하는 함수는 Build Map 함수이고, 위 그림에서 보는 것과 같이 함수 팔레트에서 Programming > Collection > Map > Build Map을 선택하면 추가할 수 있다.

Build Map 함수는 위 그림과 같은 입/출력 터미널을 갖는다. 여기서 주목할 부분은, 맵 타입 데이터 자체가 키와 그에 상응하는 데이터의 조합으로 구성되므로, 함수의 위 또는 아래의 파란색 사각형을 이용해서 함수의 입력 터미널을 추가해주었을 때, 키와 데이터 입력 터미널이 쌍으로 추가된다. 그렇다. 파이썬의 딕셔너리 타입이 연상된다. ㅎㅎ

간단한 예제 프로그램을 통해 Build Map 함수를 이용해서 맵 타입 데이터를 생성해보자. 위 그림과 같이 3개의 문자열 컨트롤 오브젝트를 Build Map 함수의 키 입력 터미널과 연결하고 그에 상응하는 데이터로 정수형 컨트롤 오브젝트를 연결하였다. 각각의 컨트롤 오브젝트에 임의의 데이터를 입력하고 프로그램을 실행시키면 위 그림과 맵 데이터를 얻을 수 있다.

위 프로그램을 통해 알 수 있듯이, 맵 데이터 타입은 지난 글에서 살펴본 셋 데이터 타입과 많은 부분이 닮아 있다. Build 함수를 통해 데이터를 생성하는 것도 그렇고, 위 프로그램의 결과처럼 연결된 데이터의 순서와 관계 없이 데이터가 생성되는 것도 그러하다.

중복되는 키 데이터에 대해 중복을 허용하지 않는다는 부분도 닮았고,

지정된 함수를 이용해서 원소를 추가 또는 삭제하는 방법도 닮았다.

지금까지 2개의 글을 통해 랩뷰 2019 버전부터 지원하기 시작한 2개의 데이터 타입인 셋과 맵 데이터 타입에 대해 알아보았다. 데이터 타입의 특성에 집중하기 위해 추가적인 함수에 대한 사용 방법 등은 생략하였는데, 이런 부분이야 잠깐 시간을 내서 한 번만 사용해보면 금방 알 수 있는 내용들이므로 크게 중요하지 않은 부분이고…. 아마도 랩뷰가 왜 이런 데이터 타입을 지원하기 시작했는가와 어디에 적용할 수 있는지가 주된 관심사가 아닐까 생각한다.

이미 랩뷰에서는 배열과 클러스터라는 2개의 사용자 정의형 데이터 타입을 지원하고 있다. 그리고 약간의 응용력을 가미한다면 간단한 자료 구조를 직접 구현하고 사용할 수도 있다. 그럼에도 불구하고 셋과 맵이라는 2개의 데이터 타입을 지원하기 시작한 이유가 궁금해질 수 밖에 없는데, 불행히도 내셔널 인스트루먼트사의 직원이 아닌 관게로 오피셜한 이유를 찾기에는 접근할 수 있는 정보가 너무 제한적이었다. 따라서, 오피셜이 아닌 뇌피셜을 조금 떠들어보자면, 해시를 이용해서 수집된 데이터를 좀 더 빠르고 효과적으로 관리하기 위함이라 생각한다.

이미 앞에서 이야기한대로, 셋과 맵은 파이썬의 셋과 딕셔너리 타입과 매칭되는 데이터 타입이다. 이들의 공통된 특징이 데이터를 순서대로 정렬하지 않으므로, 인덱싱에 의한 접근이 불가하다는 점이다. 다시 말해, 정렬과 검색 등에 있어서 배열 등에서 사용하는 선형적인 검색 등을 하지 않으므로, 빠른 검색이나 데이터의 빠른 삽입/삭제 등이 가능하다. 따라서, IIoT 시대에 맞춰 대량의 데이터를 처리해야 하는 시대의 추이에 맞춰서 랩뷰도 변화를 준 것이 아닌가라는 것이 나의 뇌피셜이라 할 수 있다.

여하튼, 지난 글과 이번 글에서는 랩뷰가 2019 버전부터 지원하기 시작한 셋과 맵 데이터 타입에 대해 알아보았다. 이들의 데이터 타입 처리를 위한 추가적인 함수의 사용법이나 데이터 타입 자체의 활용법에 대해서는 다음에 천천히 알아보기로 하자.

반응형

'Programming > LabVIEW' 카테고리의 다른 글

SubVI  (0) 2021.08.09
SET과 MAP 데이터의 함수들  (0) 2021.08.07
SET 데이터 타입  (0) 2021.08.03
배열 초기화 & 배열 만들기 함수  (0) 2021.08.01
배열 크기 함수  (0) 2021.07.31