IMCAT.DEV
로그인 가입
Lua 입문 자료구조

Lua 테이블 기초

Lua 테이블 기초 — 초급

테이블 기초

1. 도입 (왜 배워야 하는가)

Lua에서 테이블은 매우 중요한 데이터 구조입니다. 테이블은 배열, 딕셔너리, 객체 등 다양한 형식을 지원하는 유연한 구조로, 실무에서는 데이터 저장과 관리의 핵심 역할을 합니다. 예를 들어, 게임 개발에서는 캐릭터의 속성, 아이템 목록 등을 테이블로 관리하게 됩니다.

만약 테이블의 개념을 모른다면, 데이터 구조를 효율적으로 관리할 방법을 잃게 되어 복잡한 데이터를 처리하는 데 어려움을 겪을 수 있습니다. 결국 코드의 가독성과 유지보수성이 떨어지고, 오류가 발생할 가능성이 높아집니다.

2. 핵심 개념 설명

테이블 (Table)

테이블은 Lua의 기본 데이터 구조로, 키-값 쌍으로 데이터를 저장합니다. 실생활에서 테이블을 비유하자면, '주소록'과 같습니다. 이름(키)이 있고, 그 이름에 해당하는 전화번호(값)가 있는 구조입니다.

용어설명
키 (Key)데이터에 접근하기 위한 식별자
값 (Value)키에 대응하는 데이터
배열 (Array)숫자 인덱스를 가진 테이블
딕셔너리 (Dictionary)문자열 키를 가진 테이블

3. 기본 코드 예제

다음은 기본적인 테이블 사용법을 보여주는 코드입니다.

-- 테이블 생성
주소록 = {
    ["홍길동"] = "010-1234-5678",
    ["김철수"] = "010-9876-5432",
}

-- 데이터 접근
print("홍길동의 전화번호: " .. 주소록["홍길동"])
print("김철수의 전화번호: " .. 주소록["김철수"])

실행 결과:

홍길동의 전화번호: 010-1234-5678
김철수의 전화번호: 010-9876-5432

코드 한 줄씩 동작 설명:

  1. 주소록이라는 이름의 테이블을 생성하고, 이름을 키로 사용하여 전화번호를 값으로 저장합니다.
  2. print 함수를 사용하여 주소록 테이블에서 "홍길동" 키에 해당하는 값을 출력합니다.
  3. 같은 방식으로 "김철수"의 전화번호도 출력합니다.
  4. 4. 실전 활용 예제

    예제 1: 쇼핑몰 장바구니

    쇼핑몰에서 장바구니를 구현할 때, 각 상품의 정보와 수량을 테이블로 관리할 수 있습니다.

    장바구니 = {
        ["사과"] = { 가격 = 1000, 수량 = 2 },
        ["바나나"] = { 가격 = 500, 수량 = 5 },
    }
    
    -- 장바구니 총 금액 계산
    총금액 = 0
    for 과일, 정보 in pairs(장바구니) do
        총금액 = 총금액 + (정보.가격 * 정보.수량)
    end
    
    print("총 금액: " .. 총금액)

    예제 2: 학생 성적 관리

    학생들의 성적을 관리하는 테이블을 만들 수 있습니다.

    성적표 = {
        ["홍길동"] = { 수학 = 90, 영어 = 80 },
        ["김철수"] = { 수학 = 85, 영어 = 95 },
    }
    
    -- 평균 성적 계산
    for 이름, 성적 in pairs(성적표) do
        평균 = (성적.수학 + 성적.영어) / 2
        print(이름 .. "의 평균 성적: " .. 평균)
    end

    5. 흔한 실수와 주의사항

    실수 1: 잘못된 키 접근

    -- 잘못된 키 접근
    print(주소록["이영희"])  -- nil 출력

    주의사항: 키가 테이블에 존재하지 않으면 nil이 반환됩니다. 존재하는 키를 사용해야 합니다.

    실수 2: 테이블 초기화 방법

    -- 잘못된 초기화
    주소록 = {}
    주소록["홍길동"] = nil  -- 데이터 삭제가 아님

    주의사항: 키에 nil 값을 할당하면 해당 키가 삭제되지 않습니다. 대신 주소록["홍길동"] = nil을 사용하여 키를 완전히 삭제해야 합니다.

    6. 정리

    • Lua에서 테이블은 기본적인 데이터 구조로, 다양한 형태의 데이터를 저장할 수 있다.
    • 테이블은 키-값 쌍으로 구성되며, 배열 및 딕셔너리와 같은 역할을 한다.
    • 실무에서는 테이블을 통해 데이터를 효율적으로 관리할 수 있다.
    • 흔한 실수로는 키 접근 오류와 잘못된 초기화가 있다.

다음에 학습하면 좋은 주제는 메타테이블과 객체지향 프로그래밍입니다. 테이블을 활용하여 더 복잡한 구조를 만드는 방법을 배울 수 있습니다.