Menu
Coddy logo textTech

제네릭이 해결하는 문제

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

전달받은 값을 그대로 반환하기만 하는 함수, 즉 항등(identity) 함수가 필요하다고 가정해 봅시다. 지금까지 배운 타입만으로는 두 가지 옵션이 있으며, 두 방법 모두 한계가 있습니다.

첫 번째 옵션: 타입별로 별도의 복사본을 작성합니다. 본문은 동일하며, 어노테이션만 다릅니다:

local function echoNumber(value: number): number
    return value
end

local function echoString(value: string): string
    return value
end

새로운 타입이 추가될 때마다 또 다른 복사본이 필요하며, 하나에서 수정된 버그는 모든 복사본에서 수정되어야 합니다. 이는 함수를 작성하여 피하려는 중복과 정확히 일치합니다.

두 번째 옵션: any 타입을 사용해 하나로 합칩니다:

local function echo(value: any): any
    return value
end

이제 하나의 함수가 모든 것을 처리하지만, 타입 안전성을 포기해야 합니다. echo("hello")를 호출할 때 checker는 더 이상 resultstring이라는 것을 알지 못합니다. 오직 any만 알고 있으므로 자동 완성이 동작하지 않고 타입 에러가 빠져나가게 됩니다. 들어간 것나오는 것 사이의 연결 고리가 사라지는 것입니다.

진정으로 원하는 것은 모든 타입에서 작동하면서도 각 호출에서 사용된 타입을 기억하는 함수입니다. 이것이 바로 제네릭(generics)이 제공하는 기능이며, 이번 장의 주제입니다.

직접 해보기

이 레슨에는 코드 챌린지가 없습니다.

quiz icon실력 점검

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

Luau 소개의 모든 레슨