쌍과 인덱스 쌍

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

많은 스크립트는 종종 사전이나 배열을 탐색해야 합니다. 그러나 때때로 이러한 데이터 구조의 시작과 끝을 모를 수 있습니다. 예를 들어, 플레이어 사전이 변경되거나 플레이어가 크기가 다양한 배열 인벤토리를 가질 수 있습니다.

이러한 상황에서는 pairs()ipairs()를 사용할 수 있습니다. 이러한 함수는 시작 및 끝 포인트를 알지 못한 상태에서 각 요소를 탐색하기 위해 for 루프와 함께 사용할 수 있습니다.

이 기사에서는 이들을 사용하는 방법과 요리 게임에서 레스토랑 주문을 추적하는 실제 스크립트 예제를 다룰 것입니다.

사전과 pairs()

pairs()사전과 함께 사용됩니다. 아래 예제를 확인하세요.


local myDictionary = {
["Blue Player"] = "Ana",
["Gold Player"] = "Binh",
["Red Player"] = "Cate",
}
for key, value in pairs(myDictionary) do
print(key .. "은 " .. value .. "입니다.")
end

pairs()는 사전 요소의 키, 값 또는 둘 다를 사용하여 작업하는 데 사용할 수 있습니다. 아래의 for 루프에서 첫 번째 변수는 키입니다. 두 번째 변수는 값입니다. 작업하려는 사전이 pairs()에 전달됩니다.


local inventory = {
["Gold Bricks"] = 43,
Carrots = 3,
Torches = 2,
}
print("당신은 가지고 있는 것:");
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

코드를 실행하면 다음과 같은 출력이 생성됩니다:


당신은 가지고 있는 것:
43 Gold Bricks
3 Carrots
2 Torches

배열과 ipairs()

ipairs()배열과 함께 사용됩니다. ipairs()의 "i"는 "인덱스"를 의미합니다. ipairs()와 배열을 for 루프와 결합하여 리더보드와 같은 정렬된 값을 작업할 수 있습니다. 아래 예제를 확인하세요.


local players = {"Ali", "Ben", "Cammy"}
for playerRank, playerName in ipairs(players) do
print("우승자 #" .. playerRank .. "은 " .. playerName .. "입니다.")
end

코드를 실행하면 다음과 같은 출력이 생성됩니다:


우승자 #1은 Ali입니다.
우승자 #2는 Ben입니다.
우승자 #3은 Cammy입니다.

연습 - 레스토랑 수프 시뮬레이터

플레이어가 가능한 수프 재료 목록에서 선택하는 레스토랑 시뮬레이터를 위해 수프를 만들어 봅시다. 재료는 키로 저장되고, 값은 플레이어가 선택한 것을 받을 수 있도록 처음에는 false로 설정됩니다.

pairs()를 사용하여 어떤 것이 선택되었는지 확인한 다음 ipairs()를 사용하여 재료 목록을 인쇄합니다.

  1. 사전을 만들고 menu라는 이름을 붙입니다. 키는 재료이고 값은 false인 3 - 5 개의 키-값 쌍을 추가합니다.


    local menu = {
    cabbage = false,
    beef = false,
    tomato = false,
    noodles = false,
    }
  2. 메뉴 사전 아래에 고객의 선택으로 나중에 채워질 빈 배열을 추가합니다.


    -- 고객의 수프
    local selectedIngredients = {}
  3. pairs()를 사용하여 사전의 각 재료가 true 또는 false로 표시되어 있는지 확인합니다. true인 경우 재료를 수프에 추가합니다.


    -- 고객의 수프
    local selectedIngredients = {}
    -- 고객의 선택을 수프에 추가합니다
    for menuChoice, value in pairs(menu) do
    if value then
    table.insert(selectedIngredients, menuChoice)
    end
    end
  4. 고객에게 주문 내용을 반복해서 확인합니다. 스크립트에 다음을 코드로 작성합니다.

    • selectedIngredients에 메뉴 항목이 있는지 확인합니다. 그렇다면 인쇄합니다: "당신은 다음과 같은 수프를 주문했습니다: ".
    • ipairs()를 사용하여 selectedIngredients 배열을 탐색하고 각 재료를 인쇄합니다.
    • 최소한 하나의 메뉴 항목을 true로 변경하여 테스트합니다.

    -- "selectedIngredients"에서 수프 주문 인쇄
    if #selectedIngredients > 0 then
    print("당신은 다음과 같은 수프를 주문했습니다: ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    end
  5. 메뉴 항목이 있는지 확인하는 if 문에 고객에게 재료가 선택되지 않았음을 알려주는 else 조건을 추가합니다.


    if #selectedIngredients > 0 then
    print("당신은 다음과 같은 수프를 주문했습니다: ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    else
    print("선택된 것이 없습니다. 배가 고프지 않나요?")
    end

선택적 도전 과제

아래는 pairs와 ipairs를 다양한 방식으로 사용하는 도전 과제입니다. 이러한 도전 과제를 코드로 구현해 보세요.

도전 과제: 웨이터 NPC 만들기 출력 창을 사용하는 대신, 배열 소개에서 NPC를 사용하여 고객의 주문을 받는 웨이터를 만드세요.

도전 과제: 플레이어가 주문하기 플레이어가 근접 프롬프트와 같은 물리적인 부분을 터치하여 재료를 선택할 수 있도록 합니다. 자세한 내용은 근접 프롬프트를 참조하세요.

고급 도전 과제: 나를 위한 수프 시뮬레이터 만들기 플레이어가 요리사가 되는 레스토랑 시뮬레이터를 만드세요! 플레이어는 웨이터가 제공한 주문에 맞게 재료를 조합해야 합니다.

  1. 3 - 5개의 서로 다른 재료에 대한 게임 내 소품을 만듭니다.
  2. 이 수업에서의 사전과 유사한 3 - 5개의 레시피를 만듭니다.
  3. 모든 레시피를 담고 있는 배열을 만듭니다.
  4. 무작위로 레시피를 선택하고 NPC를 사용하여 플레이어에게 재료가 무엇인지 알려줍니다.
  5. 플레이어가 터치한 소품 재료를 기반으로 레시피를 만들기 위한 새 사전을 만듭니다.
  6. 플레이어의 레시피와 NPC가 선택한 레시피를 비교합니다.
  7. 타이머와 같은 추가 조건을 추가하여 도전을 증가시킵니다.
©2026 Roblox Corporation. Roblox 및 Roblox 로고, 'Powering Imagination'은 미국 및 기타 국가 내 당사의 등록 및 미등록 상표입니다.