유니온으로서의 문자열 Enum
Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨. 73개 중 53번째.
숫자는 로그를 이해하기 어렵게 만듭니다. 2를 보면 알 수 있는 것이 거의 없지만, "down"을 보면 모든 것을 알 수 있습니다. 읽기 쉬운 enum을 위해 Luau의 리터럴 union 타입이 도구로 사용됩니다. 멤버가 정확한 문자열인 타입입니다:
type Direction = "up" | "down" | "left" | "right"
local facing: Direction = "up" -- ✓
local typo: Direction = "upp" -- ✗ 편집 중 타입 오류Direction으로 주석이 달린 변수는 이 네 문자열을 담을 수 있으며, 그 외에는 아무것도 담을 수 없습니다. 하나라도 철자를 잘못 쓰면 검사기가 즉시 이를 잡아냅니다. 버그가 player에게 도달하는 일은 없습니다.
runtime에서 값은 plain strings입니다. 이를 출력하고, 연결하고, ==로 비교할 수 있습니다. strings에 대해 알고 있는 모든 것이 적용됩니다:
print(facing) -- 위
print(`facing {facing}`) -- 위를 향함이제 사용할 수 있는 두 패턴을 비교해 보세요. 상수 테이블은 멤버를 담는 하나의 runtime 값(UserRole)을 만드는 반면, literal union은 값을 전혀 만들지 않습니다. Direction 테이블은 없고, 어떤 strings가 들어맞는지에 대해 검사기가 적용하는 규칙만 있습니다. runtime 비용 없이 설명적이고 자기 문서화되는 값을 제공하므로, literal union은 Luau 코드에서 가장 일반적으로 사용하는 enum 스타일입니다.
챌린지
쉬움"up", "down", "left" 및 "right" 멤버를 가진 Direction이라는 리터럴 유니온 타입을 만드세요.
각각 Direction으로 주석이 달린 네 개의 변수를 만드세요.
upDirection="up"downDirection="down"leftDirection="left"rightDirection="right"
다음 항목을 각각 한 줄씩 출력하세요.
upDirectiondownDirectionleftDirectionrightDirectionleftDirection에서 문자열 보간을 사용해 만든The player moves left메시지
직접 해보기
-- 여기에 코드를 작성하세요
-- 1) Direction 타입을 네 개의 문자열 리터럴의 유니온으로 정의하세요
-- 2) 타입이 주석된 네 개의 변수를 생성하세요
-- 3) 각각을 출력한 다음, 보간된 메시지를 출력하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
Luau 소개의 모든 레슨
7프로젝트: Typed Task Manager
프로젝트: 태스크 형태 정의하기태스크 추가 함수8Luau 방식의 Enum
Luau의 Enum 패턴테이블을 사용한 숫자 Enum유니온으로서의 문자열 Enum리터럴 유니온 Enum 사용하기상수 테이블 동결하기요약: Luau 방식의 Enum직접 연습해 보세요: 온라인 Lua 컴파일러