Menu
CoddyTech

제네릭 함수 사용하기

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

identity에 T가 무엇인지 알려 줄 필요가 없습니다. 검사기가 알아서 추론합니다. 이것이 타입 추론입니다. 호출할 때마다 Luau는 인수를 살펴보고 T를 추론합니다.

local word = identity("Luau")   -- T가 string으로 추론됨
local count = identity(12)      -- T가 number로 추론됨
local flag = identity(false)    -- T가 boolean으로 추론됨

각 호출은 독립적입니다. 한 줄에서는 T가 문자열일 수 있고, 다음 줄에서는 숫자일 수 있습니다. 추론된 결과는 직접 작성한 어노테이션만큼 안전합니다. 검사기에게 word는 string이며, 자동 완성과 오류 검사도 완벽하게 지원됩니다.

TypeScript와 중요한 차이점이 하나 있습니다. TS에서는 identity<number>(5)처럼 호출할 때 타입을 강제로 지정할 수 있습니다. Luau에는 호출 시점의 타입 인수가 없습니다. 해당 줄은 특별한 문법이 아니므로, Luau는 꺾쇠 괄호를 작음/큼 비교 연산자로 읽고 코드는 실패합니다. 타입을 명시하고 싶다면 대신 변수에 어노테이션을 추가하세요.

local count: number = identity(12)

익숙한 도구로 타입 추론이 작동하는 모습을 확인할 수 있습니다. typeof는 값의 런타임 타입 이름을 반환하므로, print(typeof(identity(12)))는 number를 출력합니다. 값은 제네릭 함수를 거치면서 전혀 바뀌지 않았습니다.

challenge icon

챌린지

쉬움

각 호출에서 검사기가 T를 추론하도록 하세요.

  1. 함수 아래에 주석 없이 identity("Oslo")를 local city에 저장하고, identity(42)를 local floors에 저장하세요.
  2. typeof(city)를 출력한 다음 typeof(floors)를 출력하세요.

코드 실행을 누르세요. 출력에는 string과 number가 표시됩니다.

직접 해보기

-- 지난 수업에서 배운 제네릭 identity 함수
local function identity<T>(value: T): T
    return value
end

-- 1) identity 호출로 city와 floors를 만들고, 타입 명시 없이
-- 2) 각각의 typeof를 출력

Luau 소개의 모든 레슨

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