제네릭 항등 함수
Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨. 80개 중 62번째.
다음은 제대로 작성된 항등 함수, 즉 제네릭 함수입니다:
local function identity<T>(value: T): T
return value
end함수 이름 뒤의 <T>는 타입 매개변수를 선언합니다. 이는 “호출할 때마다 결정되는 어떤 타입”을 나타내는 자리표시자입니다. 시그니처 안에서는 T를 실제 타입과 똑같이 사용합니다. 매개변수는 T 타입이고, 함수는 T 타입을 반환합니다.
입력과 출력에 같은 T를 사용하는 것이 핵심입니다. 둘을 서로 연결해 주기 때문입니다. identity("hello")를 호출하면 검사기는 해당 호출에서 T = string이라고 판단하므로 결과는 string 타입입니다. identity(42)를 호출하면 T = number이므로 결과는 number 타입입니다. 하나의 함수 본문으로 모든 타입을 처리하고, 아무것도 잃지 않습니다.
T는 관례적인 이름일 뿐입니다(“Type”의 약자). <Item>이나 <Value>를 사용해도 똑같이 동작합니다. 그리고 Luau에서는 언제나 그렇듯이 꺾쇠괄호는 검사기에서만 사용됩니다. 런타임에서는 일반 Lua 함수인 function identity(value) return value end가 됩니다.
챌린지
쉬움값의 타입을 그대로 유지하면서 어떤 값이든 반환하는 함수 하나를 작성하세요.
local function identity<T>(value: T): T를 작성해value를 반환하세요.local luckyNumber: number = identity(7)와local greeting: string = identity("Hello, Luau!")를 선언하세요.luckyNumber를 출력한 다음greeting을 출력하세요.
코드 실행을 누르세요. 출력에 7과 Hello, Luau!가 표시됩니다.
직접 해보기
-- 1) identity<T>(value: T): T
-- 2) identity 호출에서 얻은 luckyNumber와 greeting
-- 3) 둘 다 출력
Luau 소개의 모든 레슨
4함수 다루기
매개변수와 반환값의 타입 지정익명 함수의 타입 지정아무것도 반환하지 않는 함수선택적 매개변수기본 매개변수 값불리언 기본값가변 인자 함수함수 타입 정의하기복습: 타입이 지정된 함수직접 연습해 보세요: 온라인 Luau 컴파일러