Luau의 Enum 패턴
Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨 — 73개 중 51번째.
프로그램은 작고 고정된 집합에서 가져온 값들로 가득 차 있습니다. 주문 상태가 pending, shipped, delivered이거나 플레이어가 up, down, left, right를 바라보는 식입니다. 많은 언어에는 이를 위한 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도 다루게 됩니다.
직접 해보기
이 레슨에는 코드 챌린지가 없습니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
Luau 소개의 모든 레슨
7프로젝트: Typed Task Manager
프로젝트: 태스크 형태 정의하기태스크 추가 함수8Luau 방식의 Enum
Luau의 Enum 패턴테이블을 사용한 숫자 Enum유니온으로서의 문자열 Enum리터럴 유니온 Enum 사용하기상수 테이블 동결하기요약: Luau 방식의 Enum