Menu
Coddy logo textTech

제네릭 항등 함수

Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨. 73개 중 58번째.

다음은 제대로 만들어진 제네릭 함수(generic function) 형태의 identity 함수입니다:

local function identity<T>(value: T): T
    return value
end

함수 이름 뒤의 <T>타입 매개변수(type parameter)를 선언합니다. 이는 "호출될 때마다 결정되는 어떤 타입"을 나타내는 자리표시자입니다. 시그니처 내부에서 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

챌린지

쉬움

다음 조건을 만족하는 identity라는 이름의 generic 함수를 생성하세요:

  • 타입 파라미터 T를 선언합니다
  • T 타입의 value라는 이름의 매개변수 하나를 받습니다
  • 해당 값을 반환하며, 반환 타입은 T입니다

그런 다음 작성한 함수를 사용하여 다음 타입 지정 변수들을 만드세요:

  • number 타입의 luckyNumber7을 전달하여 identity를 호출합니다
  • string 타입의 greeting"Hello, Luau!"를 전달하여 identity를 호출합니다
  • boolean 타입의 isReadytrue를 전달하여 identity를 호출합니다

다음 항목들을 각각 한 줄씩 출력하세요:

  1. luckyNumber
  2. greeting
  3. isReady
  4. print 내부에서 직접 "<code>generics"를 전달하여 identity를 호출한 결과
  5. print 내부에서 직접 99를 전달하여 identity를 호출한 결과

직접 해보기

-- 여기에 코드를 작성하세요
-- 1) identity<T>(value: T): T를 정의하세요
-- 2) identity 호출로 luckyNumber, greeting 및 isReady를 생성하세요
-- 3) 그것들을 출력한 다음, identity(지침의 정확한 텍스트)와 identity(99)를 출력하세요
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Luau 소개의 모든 레슨

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