테이블 순회하기
Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨 — 73개 중 17번째.
Lua 테이블을 이미 여러 번 반복 처리해 보셨을 것입니다 — Luau는 완전히 동일한 루프를 유지하면서 루프 변수에 타입을 추가합니다. 배열의 경우, ipairs가 인덱스 1부터 #t까지 순서대로 요소를 순회하며, 두 변수 모두에 타입을 지정할 수 있습니다:
local temps: {number} = {18, 21, 19}
for day: number, temp: number in ipairs(temps) do
print(`Day {day}: {temp}`)
endipairs는 첫 번째 누락된 인덱스에서 멈춘다는 점을 기억하세요 — 중간에 있는 nil 구멍은 루프를 일찍 종료시킵니다. 잘 관리된 배열에서는 거의 문제가 되지 않지만, 알고 있을 가치가 있습니다.
맵의 경우 pairs를 사용하며, 문자열 키를 포함한 모든 키/값 쌍을 방문합니다. {[string]: number} 맵에서 루프 변수는 자연스럽게 string 및 number가 됩니다:
local ages: {[string]: number} = {Alice = 30, Bob = 25}
for name: string, age: number in pairs(ages) do
print(`{name} is {age}`)
end한 가지 중요한 주의 사항: pairs는 해시 부분 키를 순서가 보장되지 않은 상태로 방문하므로 실행할 때마다 달라질 수 있습니다. 확정적인 출력(정렬된 보고서, 테스트 등)이 필요할 때는 키를 배열에 수집하고, table.sort를 수행한 다음, 정렬된 키를 ipairs로 반복하면서 맵을 인덱싱하세요.
챌린지
쉬움18, 21, 19 및 24로 초기화된 타입 지정 배열 temps: {number}를 생성하세요.
ipairs를 사용하여 반복하고, 두 루프 변수(day: number, temp: number)에 모두 타입을 지정하세요. 각 요소에 대해 정확히 다음과 같이 출력하세요:
Day 1: 18(백틱을 사용한 문자열 보간 활용), 그리고 각 온도를 누적 합계에 더하세요.
루프가 끝난 후, 별도의 줄에 합계를 출력하세요.
직접 해보기
-- 여기에 코드를 작성하세요
-- 1) temps 선언: {number} = {18, 21, 19, 24}
-- 2) for day: number, temp: number in ipairs(temps) do ... end
-- `Day {day}: {temp}`를 출력하고 total에 합산
-- 3) 루프 후에 total 출력
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.