Luau의 Enum 패턴
Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨. 80개 중 55번째.
프로그램에는 작고 고정된 집합에서 가져온 값이 가득합니다. 주문은 대기 중, 배송됨 또는 배달 완료 상태이고, 플레이어는 위, 아래, 왼쪽 또는 오른쪽을 향합니다. 많은 언어에는 이를 위한 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" -- ✗ 타입 오류유니언은 검사기에서만 존재하므로 런타임 비용이 전혀 없지만, 변수가 집합에 없는 값을 가질 수 없도록 보장합니다. 두 패턴은 서로를 보완합니다. 테이블은 하나의 이름 아래 런타임 값을 제공하고, 유니언은 컴파일 시간 보장을 제공합니다. 이 단원의 뒷부분에서는 상수 테이블이 런타임에 수정되지 않도록 보호하는 table.freeze도 살펴봅니다.
챌린지
쉬움두 열거형 패턴을 나란히 시도해 보세요.
- 상수 테이블
local Speed = {Slow = 8, Fast = 24}을 만드세요. type Pace = "slow" | "fast"를 작성하고local pace: Pace = "fast"를 선언하세요.Speed.Fast를 출력한 다음pace를 출력하세요.
코드 실행을 누르세요. 출력에는 24와 fast가 표시됩니다.
직접 해보기
-- 1) Slow = 8, Fast = 24인 상수 테이블 Speed
-- 2) type Pace = "slow" | "fast"를 정의한 다음, local pace: Pace = "fast"를 선언
-- 3) Speed.Fast를 출력한 다음 pace를 출력
Luau 소개의 모든 레슨
4함수 다루기
매개변수와 반환값의 타입 지정익명 함수의 타입 지정아무것도 반환하지 않는 함수선택적 매개변수기본 매개변수 값불리언 기본값가변 인자 함수함수 타입 정의하기복습: 타입이 지정된 함수8Luau 방식의 Enum
Luau의 Enum 패턴테이블을 사용한 숫자 Enum유니온으로서의 문자열 Enum리터럴 유니온 Enum 사용하기상수 테이블 동결하기요약: Luau 방식의 Enum직접 연습해 보세요: 온라인 Luau 컴파일러