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()를 사용하면 문자열 키를 포함한 다섯 개의 항목을 모두 보게 됩니다.
챌린지
쉬움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
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.