Menu
Coddy logo textTech

유니온으로서의 문자열 Enum

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

숫자는 모호한 로그를 만듭니다: 2를 보는 것은 거의 아무것도 알려주지 않지만, "down"을 보는 것은 모든 것을 알려줍니다. 가독성 높은 enum을 만들기 위해, Luau의 literal union 타입이 바로 그 도구입니다 — 멤버가 정확한 문자열인 타입입니다:

type Direction = "up" | "down" | "left" | "right"

local facing: Direction = "up"    -- ✓
local typo: Direction = "upp"     -- ✗ 편집 중 타입 오류

Direction으로 주석 처리된(annotated) 변수는 이 four 개의 문자열만 가질 수 있으며 다른 것은 전혀 가질 수 없습니다. 하나라도 오타를 내면 체커가 즉시 감지하여 — 버그가 player에게 절대 도달하지 않습니다.

runtime 시점에 이 값들은 plain 문자열(strings)입니다. 출력(print)하거나, 연결하거나, ==로 비교하는 등 — 문자열에 대해 알고 있는 모든 내용이 적용됩니다:

print(facing)            -- 위
print(`facing {facing}`) -- facing 위

이제 여러분이 알게 된 두 가지 패턴을 비교해 보세요: 상수 테이블은 멤버를 갖는 하나의 runtime 값(UserRole)을 생성하는 반면, literal union은 아무런 값도 생성하지 않습니다 — Direction 테이블은 존재하지 않으며, 어떤 문자열이 맞는지 체커가 강제하는 규칙만 있을 뿐입니다. runtime 비용이 전혀 없으면서 설명적이고 스스로 문서화되는 값 덕분에 literal union은 Luau 코드에서 가장 널리 쓰이는 enum 스타일이 됩니다.

challenge icon

챌린지

쉬움

"up", "down", "left", "right" 멤버를 가진 Direction이라는 이름의 literal union type을 생성하세요.

각각 Direction으로 타입이 annotatedfour개의 variables를 생성하세요:

  • upDirection = "up"
  • downDirection = "down"
  • leftDirection = "left"
  • rightDirection = "right"

각각 별도의 줄에 다음을 print하세요:

  1. upDirection
  2. downDirection
  3. leftDirection
  4. rightDirection
  5. leftDirection을 사용하여 문자열 보간법(string interpolation)으로 생성한 messageThe player moves left

직접 해보기

-- 여기에 코드를 작성하세요
-- 1) Direction 타입을 네 개의 문자열 리터럴의 유니온으로 정의하세요
-- 2) 타입이 주석으로 달린 네 개의 변수를 생성하세요
-- 3) 각각을 출력한 다음, 보간된 메시지를 출력하세요
quiz icon실력 점검

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

Luau 소개의 모든 레슨