인덱스 시그니처
Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨. 80개 중 78번째.
테이블 단원에서 {[string]: number}와 같은 맵 타입을 배웠습니다. 이것은 인덱스 시그니처입니다. 모든 문자열 키가 숫자 값에 대응합니다. 코드를 작성할 때 키를 미리 알 수 없는 경우 유용합니다. 카운터, 설정, 캐시, 점수처럼 런타임에 만들어지는 모든 것에 사용할 수 있습니다.
type Counts = {[string]: number}
local counts: Counts = {}
counts["potion"] = 3 -- 모든 문자열 키를 사용할 수 있습니다
counts["sword"] = 1
counts["potion"] += 1 -- 값이 숫자인지 검사합니다맵을 사용할 때는 두 가지 런타임 동작을 알아 두어야 합니다. 첫째, 설정된 적이 없는 키를 읽으면 nil이 반환됩니다. 일반적인 카운팅 패턴에서는 or를 사용해 "누락된" 값을 0으로 바꿉니다.
counts[item] = (counts[item] or 0) + 1둘째, pairs()는 맵의 키를 순서가 보장되지 않은 상태로 순회합니다. 같은 프로그램을 두 번 실행해도 키를 방문하는 순서가 다를 수 있습니다. 출력 순서를 예측할 수 있어야 한다면 키를 배열에 모으고, table.sort로 정렬한 다음 정렬된 배열을 순회하세요.
local keys: {string} = {}
for key in pairs(counts) do
table.insert(keys, key)
end
table.sort(keys)
for _, key in ipairs(keys) do
print(`{key}: {counts[key]}`)
end챌린지
쉬움미리 이름을 알 수 없는 플레이어의 점수를 저장하세요.
type Scores = {[string]: number}을 작성하고local scores: Scores = {}를 만드세요.- 점수를 추가하세요.
scores["mia"] = (scores["mia"] or 0) + 5를 작성한 다음,"leo"에도3을 더하세요. scores["mia"],scores["leo"],scores["zed"]를 출력하세요.
Run Code를 누르세요. 출력은 5, 3, nil을 표시합니다.
직접 해보기
-- 1) type Scores = {[string]: number}를 선언한 다음, local scores: Scores = {}를 작성하세요
-- 2) "mia"에 5점, "leo"에 3점을 추가하세요
-- 3) mia, leo, zed를 출력하세요
Luau 소개의 모든 레슨
4함수 다루기
매개변수와 반환값의 타입 지정익명 함수의 타입 지정아무것도 반환하지 않는 함수선택적 매개변수기본 매개변수 값불리언 기본값가변 인자 함수함수 타입 정의하기복습: 타입이 지정된 함수직접 연습해 보세요: 온라인 Luau 컴파일러