제네릭 배열
Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨. 73개 중 60번째.
테이블이 관련되면 제네릭이 정말 유용해집니다. 이미 타입이 지정된 배열을 {number} 또는 {string}으로 작성하고 있습니다. 제네릭 function 내부에서는 element type을 간단히 T로 나타낼 수 있으며, {T}는 "결국 T가 되는 모든 것의 배열"을 의미합니다.
다음은 모든 배열의 first element를 가져오는 전형적인 예입니다.
local function first<T>(items: {T}): T?
return items[1]
end{string}을 전달하면 checker가 T = string이라고 추론하므로 결과는 string입니다. {number}를 전달하면 number입니다. 하나의 function이 타입별로 따로 만든 전체 복사본을 대신합니다.
return type을 자세히 살펴보세요. T가 아니라 T?입니다. 배열은 empty일 수 있고, 그러면 items[1]은 nil입니다. 앞에서 배운 optional type은 이를 솔직하게 말해 줍니다. "a T, 또는 nil"입니다. checker는 결과를 사용하기 전에 호출자가 nil인 경우를 처리하도록 유도합니다. 이것이 바로 typed language에서 원하는 버그 감지 기능입니다.
챌린지
쉬움first라는 이름의 제네릭 function을 생성하세요. 해당 function은 다음과 같은 기능을 수행해야 합니다:
- type parameter
T를 선언합니다. {T}type의items라는 이름의 매개변수 하나를 받습니다.- first element를 반환하며, return type은
T?입니다(빈 array인 경우nil입니다).
다음과 같은 type이 지정된 array를 생성하세요:
{string}type의fruits에"apple","banana","cherry"가 포함됩니다.{number}type의scores에10,20,30,40이 포함됩니다.{boolean}type의flags에false,true가 포함됩니다.{string}type의empty에는 element가 없습니다.
각 array를 사용하여 first를 호출한 결과를 해당 order대로 각기 별도의 줄에 출력하세요.
직접 해보기
-- 여기에 코드를 작성하세요
-- 1) first<T>(items: {T}): T?를 정의하고 items[1]을 반환
-- 2) fruits: {string}, scores: {number}, flags: {boolean}를 만들고,
-- 그리고 빈 {string} 배열
-- 3) 각 배열의 first(...)를 그 순서대로 출력
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
Luau 소개의 모든 레슨
직접 연습해 보세요: 온라인 Lua 컴파일러