Menu
CoddyTech

테이블 순회하기

Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨. 80개 중 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}`)
end

ipairs는 첫 번째 누락된 인덱스에서 멈춘다는 점을 기억하세요. 중간에 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로 정렬된 키를 순회하며 맵의 값을 인덱싱하세요.

challenge icon

챌린지

쉬움

일주일간의 기온과 총합을 출력하세요.

  1. local temps: {number} = {12, 15, 11, 14}와 local total = 0을 선언하세요.
  2. for day: number, temp: number in ipairs(temps) do로 반복하면서 `Day {day}: {temp}`를 출력하고 temp를 total에 더하세요.
  3. 반복문이 끝난 후 total을 출력하세요.

코드 실행을 누르세요. 출력에는 Day 1: 12부터 Day 4: 14까지 표시되고, 그다음 52가 표시됩니다.

직접 해보기

-- 1) temps: {number}와 total = 0을 선언한다
-- 2) 타입이 지정된 day와 temp로 반복문을 돌며 각 day를 출력하고 total에 더한다
-- 3) total을 출력한다

Luau 소개의 모든 레슨

직접 연습해 보세요: 온라인 Luau 컴파일러