제네릭 함수 사용하기
Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨. 80개 중 63번째.
identity에 T가 무엇인지 알려 줄 필요가 없습니다. 검사기가 알아서 추론합니다. 이것이 타입 추론입니다. 호출할 때마다 Luau는 인수를 살펴보고 T를 추론합니다.
local word = identity("Luau") -- T가 string으로 추론됨
local count = identity(12) -- T가 number로 추론됨
local flag = identity(false) -- T가 boolean으로 추론됨각 호출은 독립적입니다. 한 줄에서는 T가 문자열일 수 있고, 다음 줄에서는 숫자일 수 있습니다. 추론된 결과는 직접 작성한 어노테이션만큼 안전합니다. 검사기에게 word는 string이며, 자동 완성과 오류 검사도 완벽하게 지원됩니다.
TypeScript와 중요한 차이점이 하나 있습니다. TS에서는 identity<number>(5)처럼 호출할 때 타입을 강제로 지정할 수 있습니다. Luau에는 호출 시점의 타입 인수가 없습니다. 해당 줄은 특별한 문법이 아니므로, Luau는 꺾쇠 괄호를 작음/큼 비교 연산자로 읽고 코드는 실패합니다. 타입을 명시하고 싶다면 대신 변수에 어노테이션을 추가하세요.
local count: number = identity(12)익숙한 도구로 타입 추론이 작동하는 모습을 확인할 수 있습니다. typeof는 값의 런타임 타입 이름을 반환하므로, print(typeof(identity(12)))는 number를 출력합니다. 값은 제네릭 함수를 거치면서 전혀 바뀌지 않았습니다.
챌린지
쉬움각 호출에서 검사기가 T를 추론하도록 하세요.
- 함수 아래에 주석 없이
identity("Oslo")를local city에 저장하고,identity(42)를local floors에 저장하세요. typeof(city)를 출력한 다음typeof(floors)를 출력하세요.
코드 실행을 누르세요. 출력에는 string과 number가 표시됩니다.
직접 해보기
-- 지난 수업에서 배운 제네릭 identity 함수
local function identity<T>(value: T): T
return value
end
-- 1) identity 호출로 city와 floors를 만들고, 타입 명시 없이
-- 2) 각각의 typeof를 출력
Luau 소개의 모든 레슨
4함수 다루기
매개변수와 반환값의 타입 지정익명 함수의 타입 지정아무것도 반환하지 않는 함수선택적 매개변수기본 매개변수 값불리언 기본값가변 인자 함수함수 타입 정의하기복습: 타입이 지정된 함수직접 연습해 보세요: 온라인 Luau 컴파일러