Menu
CoddyTech

제네릭 항등 함수

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가 됩니다.

challenge icon

챌린지

쉬움

값의 타입을 그대로 유지하면서 어떤 값이든 반환하는 함수 하나를 작성하세요.

  1. local function identity<T>(value: T): T를 작성해 value를 반환하세요.
  2. local luckyNumber: number = identity(7)와 local greeting: string = identity("Hello, Luau!")를 선언하세요.
  3. luckyNumber를 출력한 다음 greeting을 출력하세요.

코드 실행을 누르세요. 출력에 7과 Hello, Luau!가 표시됩니다.

직접 해보기

-- 1) identity<T>(value: T): T
-- 2) identity 호출에서 얻은 luckyNumber와 greeting
-- 3) 둘 다 출력

Luau 소개의 모든 레슨

직접 연습해 보세요: 온라인 Luau 컴파일러