제네릭 배열
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인 경우를 처리하도록 알려 줍니다. 이것이 바로 타입 지정 언어에서 기대하는 버그 감지 기능입니다.
챌린지
쉬움모든 배열의 첫 번째 요소를 가져오세요.
local function first<T>(items: {T}): T?를 작성하여items[1]을 반환하세요.local fruits: {string} = {"apple", "banana"}와local empty: {number} = {}를 선언하세요.first(fruits)를 출력한 다음first(empty)를 출력하세요.
Run Code를 누르세요. 출력에는 apple과 nil이 표시됩니다.
직접 해보기
-- 1) first<T>(items: {T}): T?
-- 2) fruits: {string}와 빈 {number}
-- 3) 각각의 첫 번째 요소를 출력
Luau 소개의 모든 레슨
4함수 다루기
매개변수와 반환값의 타입 지정익명 함수의 타입 지정아무것도 반환하지 않는 함수선택적 매개변수기본 매개변수 값불리언 기본값가변 인자 함수함수 타입 정의하기복습: 타입이 지정된 함수직접 연습해 보세요: 온라인 Luau 컴파일러