테이블을 사용한 숫자 Enum
Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨. 80개 중 56번째.
상수 테이블 패턴의 전체 형태는 다음과 같습니다. PascalCase 테이블 이름을 정하고, 각 멤버에 명시적인 숫자를 지정하면 그다음부터 코드는 이름으로 표현됩니다:
local UserRole = {
Admin = 1,
Editor = 2,
Viewer = 3,
}TypeScript의 enum과 달리 자동으로 숫자가 지정되지 않습니다. 모든 값을 직접 선택합니다. 1부터 시작하는 방식은 Lua의 관례에 잘 맞지만, 어떤 방식이든 사용할 수 있습니다(200, 404 같은 HTTP 스타일 코드도 괜찮습니다).
멤버는 비교할 때 특히 유용합니다. 역할을 받는 함수에서는 숫자만 사용하는 대신 이름이 지정된 상수를 기준으로 분기할 수 있습니다:
local function checkPermissions(role: number)
if role == UserRole.Admin then
print("Full access granted")
elseif role == UserRole.Editor then
print("Edit access granted")
else
print("View access only")
end
end매개변수의 타입이 number라는 점에 유의하세요. 테이블 패턴만으로는 허용되는 숫자를 제한하지 않습니다. 바로 그 제한을 다음 레슨에서 리터럴 유니온으로 추가합니다.
챌린지
쉬움상수 테이블로 난이도 세 가지의 이름을 지정하세요.
local Level = {Easy = 1, Normal = 2, Hard = 3}을 만드세요.local function describeLevel(level: number): string을 작성하고,Level.Easy일 때"Relaxed"를,Level.Normal일 때"Standard"를 반환하며, 그 외에는"Brutal"을 반환하게 하세요.Level.Hard를 출력한 다음describeLevel(Level.Normal)을 출력하세요.
코드 실행을 누르세요. 출력에 3과 Standard가 표시됩니다.
직접 해보기
-- 1) Level 상수 테이블 (Easy = 1, Normal = 2, Hard = 3)
-- 2) if/elseif/else를 사용하는 describeLevel(level: number): string
-- 3) Level.Hard를 출력한 다음 describeLevel(Level.Normal)을 출력
Luau 소개의 모든 레슨
4함수 다루기
매개변수와 반환값의 타입 지정익명 함수의 타입 지정아무것도 반환하지 않는 함수선택적 매개변수기본 매개변수 값불리언 기본값가변 인자 함수함수 타입 정의하기복습: 타입이 지정된 함수8Luau 방식의 Enum
Luau의 Enum 패턴테이블을 사용한 숫자 Enum유니온으로서의 문자열 Enum리터럴 유니온 Enum 사용하기상수 테이블 동결하기요약: Luau 방식의 Enum직접 연습해 보세요: 온라인 Luau 컴파일러