유니온 타입
Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨 — 73개 중 31번째.
때로는 하나의 타입만으로는 충분하지 않습니다. 사용자 ID는 "user123"과 같은 string 또는 42와 같은 number로 들어올 수 있습니다. 순수 Lua에서는 문제없기를 바랄 뿐이었지만, Luau는 유니온 타입(union types)을 제공합니다 — 파이프 |는 "또는(or)"으로 읽습니다:
local userId: number | string
userId = "user123" -- ✓ string이 허용됩니다
userId = 42 -- ✓ number가 허용됩니다
userId = true -- ✗ 타입 오류: boolean은 유니온에 없습니다변수는 유니온의 멤버 중 하나를 가질 수 있으며 — 오직 그 구성 요소만 가능합니다. 이것이 any와의 결정적인 차이점입니다: 유니온은 필요한 유연성을 제공하는 동시에 허용되는 항목에 대해 엄격함을 유지합니다.
유니온은 여러 입력 형식을 허용하는 함수 매개변수에 특히 유용합니다:
function printId(id: number | string): ()
print(id)
end
printId(42) -- 숫자로 작동합니다
printId("user123") -- 문자열로 작동합니다여러분은 이미 string?을 알고 계실 것입니다 — 그것이 바로 여러분의 첫 번째 유니온이었습니다! 이것은 단순히 string | nil의 줄임말입니다. 다음 레슨에서는 유니온 값을 얻은 후 이를 안전하게 처리하는 방법을 배우게 됩니다.
챌린지
쉬움id: number | string을 매개변수로 받아 이를 출력하는 printId라는 함수를 생성하세요 — 명시적 반환 타입은 ()입니다.
"active"로 초기화된 string | number 타입의 변수 status를 선언하세요.
그런 다음, 순서대로 진행하세요:
printId(42)호출printId("user123")호출status출력status를200으로 다시 할당하고 이를 다시 출력
총 4줄이 출력되어야 합니다.
직접 해보기
-- 여기에 코드를 작성하세요
-- printId(id: number | string): ()
-- local status: string | number = "active"
-- printId(42), printId("user123")를 호출,
-- status를 출력하고, 200으로 재할당한 후, 다시 출력
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.