Menu
Coddy logo textTech

Luau의 Enum 패턴

Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨. 73개 중 51번째.

프로그램은 작고 고정된 집합에서 가져온 값으로 가득합니다. 주문은 보류 중, 배송됨 또는 배달 완료 상태이고, 플레이어는 , 아래, 왼쪽 또는 오른쪽을 향합니다. 많은 언어에는 이를 위한 enum 키워드가 있습니다. 하지만 Luau에는 없습니다. 그리고 이미 가지고 있는 두 가지 도구로 이 작업을 처리할 수 있으므로 필요하지도 않습니다.

패턴 1: 상수 테이블. 일반 테이블은 의미 있는 이름을 값에 매핑하여 코드 곳곳에 흩어진 "매직 넘버"를 대체합니다.

local Status = {
    Pending = 1,
    Active = 2,
    Done = 3,
}

print(Status.Active) -- 2

이는 실제 런타임 값입니다. 지금까지 사용해 온 테이블과 마찬가지로 Status.Active를 읽고, 이를 비교 대상으로 사용하고, 다른 곳에 전달할 수 있습니다.

패턴 2: 리터럴 유니온. 유니온 단원에서 배운 리터럴 타입을 사용하여 정확한 문자열 값으로 이루어진 타입입니다.

type Color = "red" | "green" | "blue"
local favorite: Color = "green" -- ✓
local oops: Color = "yellow"    -- ✗ type error

유니온은 검사기를 위해서만 존재하므로 런타임 비용이 전혀 들지 않지만, 변수가 집합 밖의 어떤 값도 가질 수 없도록 보장합니다. 두 패턴은 서로를 보완합니다. 테이블은 하나의 이름 아래에 런타임 을 제공하고, 유니온은 컴파일 시점의 보장을 제공합니다. 이 단원의 뒷부분에서는 상수 테이블이 런타임에 수정되지 않도록 보호하는 table.freeze도 배우게 됩니다.

직접 해보기

이 레슨에는 코드 챌린지가 없습니다.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Luau 소개의 모든 레슨

직접 연습해 보세요: 온라인 Lua 컴파일러