Menu
CoddyTech

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 소개의 모든 레슨

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