리터럴 타입
Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨. 73개 중 33번째.
string 같은 타입은 모든 문자열을 허용하지만, 때로는 정확히 몇 가지 값만 의미가 있습니다. 리터럴 타입은 값 자체를 타입으로 사용합니다:
local mode: "dark" = "dark" -- 문자열 "dark"만 허용됩니다
local locked: true = true -- 불리언 true만 허용됩니다단독으로 사용하면 단일 값 타입은 그저 흥미로운 기능에 불과합니다. 하지만 unions와 결합하면 Luau에서 가장 유용한 도구 중 하나가 됩니다. 즉, 허용되는 값의 집합을 엄격하게 제어할 수 있습니다:
type Direction = "north" | "south" | "east" | "west"
type GameState = "menu" | "playing" | "paused" | "gameover"
local move: Direction = "north" -- ✓
local state: GameState = "playing" -- ✓
-- local bad: Direction = "diagonal" -- ✗ 타입 오류!이제 "nort" 같은 오타나 "diagonal" 같은 잘못된 값은 편집하는 동안 발견됩니다. 일반적인 string을 사용했다면 운 좋게 알아차릴 수 있는 경우에만 실행 중에 문제를 일으키며 그대로 통과했을 것입니다.
리터럴 타입은 대소문자를 구분하며 정확히 일치해야 합니다. "North"는 "north"와 일치하지 않습니다. 문자열 리터럴이 가장 일반적인 경우지만, 불리언 리터럴과 (최신 Luau 버전에서는) 숫자 리터럴도 같은 방식으로 작동합니다. 문자열 리터럴의 unions인 이 패턴은 다른 언어의 열거형을 Luau에서 대체하는 방법이기도 합니다. 뒤의 장에서 살펴보겠습니다.
챌린지
쉬움세 개의 리터럴 유니온 타입 별칭을 만드세요:
Direction="north" | "south" | "east" | "west"GameState="menu" | "playing" | "paused" | "gameover"Difficulty="easy" | "medium" | "hard"
별칭을 사용하여 다음을 선언하세요:
playerDirection: Direction="north"currentState: GameState="playing"selectedDifficulty: Difficulty="medium"
movePlayer(direction: Direction): string 함수를 만들어 "Moving [direction]"을 반환하고, updateGameState(state: GameState): string 함수를 만들어 "Game state: [state]"를 반환하도록 하세요.
각 항목을 한 줄에 하나씩 출력하세요:
movePlayer(playerDirection)updateGameState(currentState)selectedDifficulty의 값
직접 해보기
-- 여기에 코드를 작성하세요
-- Direction / GameState / Difficulty를 리터럴 유니온으로 타입 지정
-- playerDirection, currentState, selectedDifficulty 선언
-- movePlayer(direction: Direction): string -> "Moving [direction]"
-- updateGameState(state: GameState): string -> "Game state: [state]"
-- 세 결과를 출력
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
Luau 소개의 모든 레슨
직접 연습해 보세요: 온라인 Lua 컴파일러