테이블 순회하기
Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨. 73개 중 17번째.
Lua 테이블을 여러 번 loop해 보았을 것입니다. Luau는 정확히 동일한 loop를 유지하면서 loop variables에 type을 추가합니다. array의 경우 ipairs는 요소를 순서대로, index 1부터 #t까지 순회하며 두 variables 모두에 type annotation을 추가할 수 있습니다:
local temps: {number} = {18, 21, 19}
for day: number, temp: number in ipairs(temps) do
print(`Day {day}: {temp}`)
endipairs는 첫 번째 누락된 index에서 멈춘다는 점을 기억하세요. 중간에 있는 nil 구멍은 loop를 일찍 끝냅니다. 잘 관리된 array에서는 거의 문제가 되지 않지만, 알아둘 만한 사항입니다.
맵에는 모든 key/value pair를 방문하는 pairs를 사용하세요. 여기에는 string key도 포함됩니다. {[string]: number} 맵에서 loop variables는 자연스럽게 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는 hash-part key를 보장된 order 없이 방문합니다. 실행할 때마다 달라질 수 있습니다. 결정적인 출력을 원한다면(정렬된 보고서, tests), key를 array에 모으고 table.sort한 다음, ipairs로 정렬된 key를 loop하며 맵의 index로 사용하세요.
챌린지
쉬움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 출력
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
Luau 소개의 모든 레슨
직접 연습해 보세요: 온라인 Lua 컴파일러