Menu
Coddy logo textTech

제네릭 함수 사용하기

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

identity에게 T가 무엇인지 알려 주지 않습니다. 검사기가 스스로 알아냅니다. 이것이 타입 추론입니다. 각 호출 위치에서 Luau는 인수를 살펴보고 T를 결정합니다.

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

각 호출은 서로 독립적입니다. 한 줄에서는 T가 string일 수 있고, 다음 줄에서는 number일 수 있습니다. 추론된 결과는 직접 작성한 주석만큼 안전합니다. 검사기에게 wordstring이며, 자동 완성과 오류 검사를 모두 지원합니다.

TypeScript와 한 가지 중요한 차이점이 있습니다. TS에서는 identity<number>(5)를 사용해 호출 위치에서 타입을 강제로 지정할 수 있습니다. Luau에는 호출 위치 타입 인수가 없습니다. 해당 줄은 특별한 구문이 아니므로 Luau는 꺾쇠괄호를 less-than/greater-than 비교로 읽고 코드가 fails. 타입을 명시적으로 지정하려면 대신 변수에 주석을 추가하세요.

local count: number = identity(12)

익숙한 도구를 사용해 추론이 작동하는 모습을 확인할 수 있습니다. typeof는 값의 runtime 타입 이름을 반환하므로 print(typeof(identity(12)))number를 출력합니다. 즉, 값이 generic function을 거치는 동안 완전히 변경되지 않았습니다.

challenge icon

챌린지

쉬움

이전 lesson의 generic identity function이 이미 편집기에 있습니다. 그 추론을 활용하세요.

세 개의 변수를 만들고, checker가 T를 추론하도록 하세요(주석은 필요하지 않습니다).

  • word: "Luau"를 사용해 identity를 호출
  • count: 12를 사용해 identity를 호출
  • flag: false를 사용해 identity를 호출

다음 항목을 각각 별도의 줄에 출력하세요.

  1. word
  2. typeof(word)의 결과
  3. count
  4. typeof(count)의 결과
  5. flag
  6. typeof(flag)의 결과

직접 해보기

-- 이전 강의의 제네릭 identity 함수
local function identity<T>(value: T): T
    return value
end

-- 여기에 코드를 작성하세요
-- 1) identity 호출로 word, count, flag 생성 (T는 추론되도록)
-- 2) 각 값 뒤에 typeof를 붙여 출력
quiz icon실력 점검

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

Luau 소개의 모든 레슨

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