Menu
Coddy logo textTech

테이블을 사용한 숫자 Enum

Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨 — 73개 중 52번째.

constant-table 패턴을 올바르게 구축해 봅시다. PascalCase로 테이블 이름을 선택하고, 각 members에 명시적인 number를 부여하면 그 이후부터는 코드에서 이름으로 의도를 전달할 수 있습니다:

local UserRole = {
    Admin = 1,
    Editor = 2,
    Viewer = 3,
}

TypeScript의 enum과 달리 아무것도 자동 번호 지정되지 않습니다 — 모든 값을 직접 선택합니다. 1부터 시작하는 것이 Lua의 관례에 잘 맞지만, 어떤 체계든 작동합니다 (200이나 404와 같은 HTTP 스타일 코드도 좋습니다).

members는 비교 시에 빛을 발합니다. role을 받는 function은 raw numbers 대신 named constants를 기반으로 분기할 수 있습니다:

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라는 점에 유의하세요 — table 패턴만으로는 허용되는 numbers를 제한하지 않습니다. 그 보장은 다음 레슨에서 배울 리터럴 유니온이 정확히 추가해 주는 부분입니다.

challenge icon

챌린지

쉬움

세 개의 멤버를 가지는 UserRole이라는 이름의 constant table을 생성하세요:

  • Admin = 1
  • Editor = 2
  • Viewer = 3

role: number를 인자로 받아 다음을 print하는 function checkPermissions를 생성하세요:

  • role이 UserRole.Admin이면 Full access granted
  • role이 UserRole.Editor이면 Edit access granted
  • 그 외의 경우에는 View access only

그런 다음, 순서대로 진행하세요:

  1. UserRole.Admin print
  2. UserRole.Editor print
  3. UserRole.Viewer print
  4. checkPermissions(UserRole.Admin) call
  5. checkPermissions(UserRole.Editor) call
  6. checkPermissions(UserRole.Viewer) call

직접 해보기

-- 여기에 코드를 작성하세요
-- 1) UserRole 상수 테이블 생성 (Admin=1, Editor=2, Viewer=3)
-- 2) if/elseif/else로 checkPermissions(role: number) 작성
-- 3) 세 멤버를 출력한 다음 각각에 대해 함수 호출
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Luau 소개의 모든 레슨