제네릭 함수 사용하기
Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨 — 73개 중 59번째.
identity에 T가 무엇인지 직접 알려줄 필요가 없습니다. 타입 검사기가 스스로 이를 파악합니다. 이것이 바로 타입 추론(type inference)입니다. 호출 지점마다 Luau는 전달된 인수를 보고 T를 해독합니다:
local word = identity("Luau") -- T가 string으로 추론됨
local count = identity(12) -- T가 number로 추론됨
local flag = identity(false) -- T가 boolean으로 추론됨각 호출은 독립적입니다. 한 줄에서 T가 string이었다가 다음 줄에서는 number가 될 수 있습니다. 추론된 결과는 직접 작성한 타입 주석만큼 안전합니다. 검사기 입장에서 word는 완전한 자동 완성과 에러 검사를 지원하는 string입니다.
TypeScript와의 한 가지 중요한 차이점이 있습니다. TS에서는 identity<number>(5)처럼 호출 지점에서 타입을 강제할 수 있습니다. 하지만 Luau에는 호출 지점 타입 인수가 없습니다. 이 구문은 특별한 구문으로 취급되지 않으므로, Luau는 꺾쇠괄호를 미만/초과 comparisons 연산으로 해석하여 코드가 실패합니다(fails). 타입을 명시적으로 지정하고 싶다면 변수에 타입을 주석으로 지정하세요:
local count: number = identity(12)익숙한 도구로 추론 동작을 직접 확인할 수 있습니다. typeof는 값의 런타임 타입 이름을 반환하므로, print(typeof(identity(12)))는 number를 출력합니다. 값이 generic function을 완전히 변경되지 않은 상태로 통과했음을 보여줍니다.
챌린지
쉬움이전 lesson의 generic identity function이 이미 에디터에 있습니다. 추론 기능을 활용해 보세요.
체커가 T를 추론하도록 three개의 변수를 create하세요 (타입 어노테이션 불필요):
word—"Luau"를 전달하여identity호출count—12를 전달하여identity호출flag—false를 전달하여identity호출
다음 항목을 각각 한 줄씩 print하세요:
wordtypeof(word)의 결과counttypeof(count)의 결과flagtypeof(flag)의 결과
직접 해보기
-- 이전 강의의 제네릭 identity 함수
local function identity<T>(value: T): T
return value
end
-- 여기에 코드를 작성하세요
-- 1) identity 호출로 word, count, flag 생성 (T는 추론되도록)
-- 2) 각 값 뒤에 그 typeof를 출력
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.