Menu
Coddy logo textTech

제네릭 항등 함수

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

다음은 generic function으로 올바르게 작성한 identity function입니다:

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

함수 이름 뒤의 <T>type parameter를 선언합니다. 이는 "각 call에서 결정되는 어떤 type"을 나타내는 자리 표시자입니다. 시그니처 내부에서는 실제 type과 똑같이 T를 사용합니다. parameter는 T이고, function은 T를 반환합니다.

입력과 출력에 같은 T를 사용하는 것이 핵심입니다. 이를 통해 둘을 연결합니다. identity("hello")를 call하면 checker는 해당 call에서 T = string이라고 결정하므로 result는 string입니다. identity(42)를 call하면 T = number이므로 result는 number입니다. 하나의 본문으로 every type을 처리하며, 아무것도 잃지 않습니다.

T는 관례적인 이름일 뿐입니다("Type"의 약자). <Item> 또는 <Value>를 사용해도 똑같이 잘 작동합니다. 그리고 Luau에서는 늘 그렇듯이 꺾쇠괄호는 checker만을 위한 것입니다. 런타임에서는 이것이 일반적인 Lua function function identity(value) return value end입니다.

challenge icon

챌린지

쉬움

identity라는 generic function을 다음과 같이 만드세요:

  • type parameter T를 선언합니다
  • T type의 value라는 이름의 one parameter를 받습니다
  • return type이 T인 해당 값을 반환합니다

그런 다음 function을 사용하여 다음 typed variables를 만드세요:

  • number type의 luckyNumber: 7identity를 call합니다
  • string type의 greeting: "Hello, Luau!"identity를 call합니다
  • boolean type의 isReady: trueidentity를 call합니다

다음을 각각 별도의 줄에 출력하세요:

  1. luckyNumber
  2. greeting
  3. isReady
  4. print 내부에서 직접 "<code>generics"로 identity를 call한 result
  5. print 내부에서 직접 99identity를 call한 result

직접 해보기

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

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

Luau 소개의 모든 레슨

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