제네릭이 해결하는 문제
Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨. 73개 중 57번째.
어떤 값을 전달하든 그대로 반환하는 identity function이 필요하다고 상상해 보세요. 지금까지 알고 있는 타입으로는 두 가지 방법이 있지만, 둘 다 문제가 있습니다.
첫 번째 방법: 타입마다 별도의 복사본을 작성하는 것입니다. 본문은 동일하고 주석만 다릅니다.
local function echoNumber(value: number): number
return value
end
local function echoString(value: string): string
return value
end새로운 타입이 추가될 때마다 복사본을 하나 더 만들어야 하고, 하나에서 수정한 버그는 모두에서 수정해야 합니다. 이는 바로 버그를 피하기 위해 function을 작성하는 과정에서 피하려는 중복입니다.
두 번째 방법: any로 타입을 지정한 하나의 function으로 합치는 것입니다.
local function echo(value: any): any
return value
end이제 하나의 function이 모든 것을 처리하지만, 그 대가로 type safety를 잃게 됩니다. echo("hello")를 호출하면 checker는 더 이상 result가 string이라는 것을 알지 못합니다. checker가 아는 것은 any뿐이므로 자동 완성이 작동하지 않고 타입 오류가 그대로 넘어갑니다. 입력으로 들어간 것과 출력으로 나오는 것 사이의 연결이 사라지는 것입니다.
여러분이 정말 원하는 것은 모든 타입에서 작동하면서도 각 호출에서 사용된 타입을 기억하는 function입니다. 바로 이것을 generics가 제공하며, 이것이 이 장의 주제입니다.
직접 해보기
이 레슨에는 코드 챌린지가 없습니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
Luau 소개의 모든 레슨
직접 연습해 보세요: 온라인 Lua 컴파일러