Menu
Coddy logo textTech

제네릭 배열

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

제네릭은 테이블이 포함될 때 정말 유용해집니다. 이미 타입이 지정된 배열을 {number} 또는 {string}으로 작성하고 계실 것입니다. 제네릭 함수 내부에서는 요소 타입을 단순히 T로 나타낼 수 있으며, {T}는 "T가 무엇이든 간에 그 타입의 배열"을 의미합니다.

다음은 클래식한 예시로, 임의의 배열에서 첫 번째 요소를 가져오는 함수입니다:

local function first<T>(items: {T}): T?
    return items[1]
end

{string}을 전달하면 체커는 T = string으로 추론하므로 결과는 문자열이 됩니다. {number}를 전달하면 결과는 숫자가 됩니다. 하나의 함수로 타입별 수많은 복사본을 대체할 수 있습니다.

반환 타입을 자세히 살펴보세요: T가 아니라 T?입니다. 배열은 비어 있을 수 있으며, 이 경우 items[1]nil이 됩니다. 이전에 만났던 옵셔널 타입은 "T 또는 nil"이라고 솔직하게 알려줍니다. 체커는 호출자가 결과를 사용하기 전에 nil 케이스를 처리하도록 유도하며, 이는 타입 언어에서 기대하는 바로 그 버그 방지 기능입니다.

challenge icon

챌린지

쉬움

다음 조건을 만족하는 first라는 이름의 제네릭 함수를 생성하세요:

  • 타입 매개변수 T를 선언합니다
  • {T} 타입의 items라는 이름의 매개변수를 하나 받습니다
  • 반환 타입이 T?인 첫 번째 요소를 반환합니다 (빈 배열의 경우 nil)

다음 타입이 지정된 배열들을 생성하세요:

  • "apple", "banana", "cherry"를 가질 {string} 타입의 fruits
  • 10, 20, 30, 40을 가질 {number} 타입의 scores
  • false, true를 가질 {boolean} 타입의 flags
  • 요소가 없는 {string} 타입의 empty

각 배열을 순서대로 first에 전달하여 호출한 결과를 각각 한 줄에 하나씩 출력하세요.

직접 해보기

-- 여기에 코드를 작성하세요
-- 1) first<T>(items: {T}): T?를 정의하여 items[1]을 반환
-- 2) fruits: {string}, scores: {number}, flags: {boolean}를 생성하고,
--    빈 {string} 배열
-- 3) 각 배열의 first(...)를 그 순서대로 출력
quiz icon실력 점검

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

Luau 소개의 모든 레슨