Menu
Coddy logo textTech

테이블을 사용한 숫자 Enum

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

상수 테이블 패턴을 제대로 만들어 봅시다. PascalCase 테이블 이름을 정하고, 각 members에 명시적인 number를 지정하면 그때부터 코드는 이름으로 의미를 전달합니다:

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

TypeScript의 enum과 달리 자동으로 번호가 지정되지 않습니다. 모든 값을 직접 정합니다. 1부터 시작하는 것이 Lua의 관례에 잘 맞지만, 어떤 방식이든 사용할 수 있습니다(200404와 같은 HTTP 스타일 코드도 괜찮습니다).

members는 비교에서 특히 유용합니다. role을 받는 function은 숫자를 그대로 사용하는 대신 이름이 지정된 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 패턴만으로는 허용되는 숫자를 제한하지 않습니다. 이러한 보장이 바로 다음 레슨에서 literal unions가 추가하는 기능입니다.

challenge icon

챌린지

쉬움

UserRole이라는 constant table을 three members로 create하세요:

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

role: number를 인수로 받고 다음을 출력하는 function checkPermissions를 create하세요:

  • 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 소개의 모든 레슨

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