Menu
CoddyTech

테이블을 사용한 숫자 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라는 점에 유의하세요. 테이블 패턴만으로는 허용되는 숫자를 제한하지 않습니다. 바로 그 제한을 다음 레슨에서 리터럴 유니온으로 추가합니다.

challenge icon

챌린지

쉬움

상수 테이블로 난이도 세 가지의 이름을 지정하세요.

  1. local Level = {Easy = 1, Normal = 2, Hard = 3}을 만드세요.
  2. local function describeLevel(level: number): string을 작성하고, Level.Easy일 때 "Relaxed"를, Level.Normal일 때 "Standard"를 반환하며, 그 외에는 "Brutal"을 반환하게 하세요.
  3. 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 소개의 모든 레슨

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