프날 오토핫키 강좌  v2

⚠ 이 강좌는 오토핫키 v2를 다룹니다

지금 보시는 강좌는 과거 오랜 시간동안 알려진 오토핫키(v1.1)의 차세대 버전인 오토핫키 v2를 다루고 있습니다.
만약 구버전인 '오토핫키 v1.1'의 강좌를 찾으신다면 프날 오토핫키 강좌(https://pnal.kr)를 봐주시면 되지만, 새로 오토핫키를 배우신다면 v2 버전을 배우시는 것을 강력히 추천드립니다.

64. 배열과 맵 개요


우리는 지난 시간동안 객체를 통해 프로그램을 조금 더 구조화 하는 방법을 습득했습니다. 관련있는 변수와 함수를 하나로 묶어 관리하기 위해 객체를 도입했고요.

이번에도 프로그램을 더욱 깔끔하게 작성하는 방법을 소개하겠습니다. 바로 연관된 값을 저장할 수 있는 배열이라는 자료 구조를 말입니다.

자료 구조

우리가 프로그램을 작성할 땐 여러 값이 필요합니다. 보통은 그 값을 변수의 형태로 등장시키지만, 만약 프로그램의 규모가 엄청나게 커지면 어떻게 될까요? 아마 수많은 변수가 필요하고 스크립트는 관리하기 힘들어질 것입니다.

그래서 자료(값)를 효율적으로 관리하기 위한 여러 방법이 고안되는데, 그 방법을 통틀어 자료 구조라고 합니다.

배열과 맵

배열은 연관된 값을 하나로 묶을 수 있는 자료 구조입니다. 아직까진 '자료 구조'라는 말이 어렵지만 그냥 '값을 저장할 수 있는 방법' 정도로 생각하고 있으면 됩니다.

앞서 말씀드린 것처럼 프로그램의 규모가 커질수록 사용되는 변수는 걷잡을 수 없이 많아집니다. 이러한 상황에서 객체를 이용하여 좀 더 구조화 시킬 수 있지만, 이를 위해 구체적인 클래스를 설계해야하는 것은 큰 노력이 듭니다. 간단하게 연관된 값들을 한 이름으로 관리할 수 있는 방법이 있다면 얼마나 좋을까요?

그래서 연관된 값을 하나의 변수로 취급할 수 있는 배열 또는 을 사용합니다.

Tip: 배열과 객체의 관계

사실 배열은 객체보다 먼저 나온 개념입니다. 즉, 객체가 없던 시절엔 배열만으로 연관된 값을 저장하곤 했습니다. 당연히 배열은 객체와는 관련 없는 개념이었습니다.

그러나 오토핫키에선 배열이 객체로 구현되어 있습니다. 오토핫키에선 과거 이를 '객체 기반 배열(Object-based arrays)', 현행은 '배열 객체(Array object)'라고 부르며 오토핫키에서의 배열이 객체를 기반으로 하고 있음을 명확히 보여주고 있습니다.

타 언어에선 이와 같은 방식으로 구현된 자료 구조를 고전적 형태의 배열과 구분하기 위해 '리스트(List)'와 같이 부릅니다.

배열(맵)을 쓰면 일어나는 변화

예를 들어서, 손님의 출입을 관리하는 독서실 운영 프로그램이 있다고 해봅시다. 이 독서실의 회원 100명을 관리하기 위해선, 아래와 같이 최소 100개의 변수가 필요할 것입니다.


    student1, student2, student3, ..., student100
학생 100명을 별개의 변수로 관리하는 모습

그러나, 배열을 쓰면 아래와 같이 하나의 변수로 관리할 수 있습니다.


    student[1], student[2], student[3], ..., student[100]
학생 100명을 student 변수(배열)로 관리하는 모습

...아니, 고작 대괄호 하나 추가된 모양새인데 뭐가 좋다는거죠?

어째 모니터 넘어 여러분의 반응이 눈에 보입니다. 아직 본격적인 내용을 배우지 않았기 때문에 와닿지 않을 수 있지만, 믿고 따라와주세요. 연관된 값을 배열과 맵으로 관리하는 것은 사소해 보이지만 큰 변화를 가져다 줍니다.

  • 여러 변수를 하나로 통합하여 관리할 수 있다
  • 자료의 변동에 대처하기 용이하다.
  • 대량의 자료를 추가할 때 편리하다.
  • (오토핫키에선) 배열과 맵은 객체이므로, 자료를 관리하는 여러 메서드를 사용할 수 있다.

좋습니다. 다음 강부터 배열, 맵을 이용하여 더욱 아름다운 코드를 작성해봅시다!

질문하러 가기