제네릭 항등 함수
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입니다.
챌린지
쉬움identity라는 generic function을 다음과 같이 만드세요:
- type parameter
T를 선언합니다 Ttype의value라는 이름의 one parameter를 받습니다- return type이
T인 해당 값을 반환합니다
그런 다음 function을 사용하여 다음 typed variables를 만드세요:
numbertype의luckyNumber:7로identity를 call합니다stringtype의greeting:"Hello, Luau!"로identity를 call합니다booleantype의isReady:true로identity를 call합니다
다음을 각각 별도의 줄에 출력하세요:
luckyNumbergreetingisReadyprint내부에서 직접"<code>generics"로identity를 call한 resultprint내부에서 직접99로identity를 call한 result
직접 해보기
-- 여기에 코드를 작성하세요
-- 1) identity<T>(value: T): T를 정의하세요
-- 2) identity 호출로 luckyNumber, greeting 및 isReady를 생성하세요
-- 3) 그것들을 출력한 다음 identity(the exact text from the instructions)와 identity(99)를 출력하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
Luau 소개의 모든 레슨
직접 연습해 보세요: 온라인 Lua 컴파일러