Menu
CoddyTech

제네릭 배열

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

제네릭은 테이블을 다루기 시작하면 정말 유용해집니다. 이미 {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

챌린지

쉬움

모든 배열의 첫 번째 요소를 가져오세요.

  1. local function first<T>(items: {T}): T?를 작성하여 items[1]을 반환하세요.
  2. local fruits: {string} = {"apple", "banana"}와 local empty: {number} = {}를 선언하세요.
  3. first(fruits)를 출력한 다음 first(empty)를 출력하세요.

Run Code를 누르세요. 출력에는 apple과 nil이 표시됩니다.

직접 해보기

-- 1) first<T>(items: {T}): T?
-- 2) fruits: {string}와 빈 {number}
-- 3) 각각의 첫 번째 요소를 출력

Luau 소개의 모든 레슨

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