Menu
Coddy logo textTech

pairs() vs. ipairs()

Coddy Lua 여정의 Logic & Flow 섹션에 포함된 레슨 — 54개 중 3번째.

이제 pairs()ipairs()를 모두 배웠으므로, 각각을 언제 사용해야 하는지 이해하는 것이 중요합니다. 선택은 전적으로 테이블의 구조와 달성하려는 목표에 달려 있습니다.

1부터 시작하는 순차적인 정수 키를 가진 리스트 스타일 테이블이 있을 때 ipairs()를 사용하세요. 이는 요소를 순서대로 처리하며 첫 번째 nil 값에서 멈추므로, 순서가 중요한 배열에 사용하기에 완벽합니다.

테이블에 문자열 키, 혼합된 키 유형이 있거나 간격에 상관없이 모든 항목에 접근해야 할 때 pairs()를 사용하세요. 이는 특정 순서 없이 테이블의 모든 키-값 쌍을 반복합니다.

다음과 같은 혼합 테이블을 고려해 보세요:

local gameData = {
    "Level 1",
    "Level 2", 
    "Level 3",
    currentLevel = 2,
    playerName = "Hero"
}

ipairs()를 사용하면 세 개의 레벨 문자열만 보게 됩니다. pairs()를 사용하면 문자열 키를 포함한 다섯 개의 항목을 모두 보게 됩니다.

challenge icon

챌린지

쉬움

data 테이블을 인자로 받아 순차적인 정수 키 아이템의 개수를 반환하는 countSequentialItems 함수를 작성하세요.

ipairs()를 사용하여 테이블의 순차적인 부분(인덱스 1부터 시작하여 첫 번째 nil이 나오기 전까지)에 얼마나 많은 아이템이 존재하는지 계산하세요. 이를 통해 혼합 테이블을 다룰 때 ipairs()pairs()의 차이점을 이해할 수 있습니다.

매개변수:

  • data (table): 순차적인 정수 키와 문자열 키를 모두 포함하는 혼합 테이블

반환값: 순차적 아이템의 개수 (number)

치트 시트

1부터 시작하는 순차적인 정수 키를 가진 리스트 스타일 테이블에는 ipairs()를 사용하세요. 이는 요소를 순서대로 처리하며 첫 번째 nil 값에서 멈춥니다:

for i, value in ipairs(myList) do
    -- 순차적인 항목만 처리합니다
end

문자열 키, 혼합된 키 유형이 있는 테이블 또는 간격에 상관없이 모든 항목에 액세스해야 할 때는 pairs()를 사용하세요. 이는 특정 순서 없이 모든 키-값 쌍을 반복합니다:

for key, value in pairs(myTable) do
    -- 모든 키-값 쌍을 처리합니다
end

혼합 테이블 예시:

local gameData = {
    "Level 1",
    "Level 2", 
    "Level 3",
    currentLevel = 2,
    playerName = "Hero"
}

-- ipairs()는 "Level 1", "Level 2", "Level 3"만 인식합니다
-- pairs()는 다섯 개의 항목을 모두 인식합니다

직접 해보기

function countSequentialItems(data)
    -- 여기에 코드를 작성하세요
end
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Logic & Flow의 모든 레슨