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