pares e ipairs

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Muitos scripts frequentemente precisarão percorrer dicionários ou arrays. Mas às vezes, você pode não saber o início e o fim dessas estruturas de dados. Por exemplo, um dicionário de jogadores pode estar mudando, ou os jogadores podem ter um inventário em array de tamanhos variados.

Nessas situações, você pode usar pairs() e ipairs(). Esses podem ser utilizados com um loop for para percorrer cada elemento sem pontos de início e fim conhecidos.

Este artigo cobrira o uso deles, e terá um exemplo prático de script onde você rastreia pedidos de restaurante em um jogo de culinária.

Dicionários e pairs()

pairs() é usado com dicionários. Um exemplo é visto abaixo.


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

pairs() pode ser usado para trabalhar com a chave, valor, ou ambos de um elemento do dicionário. No loop for abaixo, a primeira variável é a chave. A segunda variável é o valor. O dicionário que você deseja trabalhar é passado para pairs().


local inventory = {
["Gold Bricks"] = 43,
Carrots = 3,
Torches = 2,
}
print("Você tem:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

Quando executado, o código imprimirá o seguinte:


Você tem:
43 Gold Bricks
3 Carrots
2 Torches

Arrays e ipairs()

ipairs() é usado com arrays. O "i" em ipairs() representa "índice". Use ipairs() e arrays em combinação com um loop for para trabalhar com valores ordenados como placares. Um exemplo está abaixo.


local players = {"Ali", "Ben", "Cammy"}
for playerRank, playerName in ipairs(players) do
print("Vencedor #" .. playerRank .. " é " .. playerName)
end

Quando executado, o código imprimirá o seguinte:


Vencedor #1 é Ali
Vencedor #2 é Ben
Vencedor #3 é Cammy

Prática - Simulador de Sopa de Restaurante

Vamos fazer uma sopa para um simulador de restaurante onde os jogadores escolhem a partir de uma lista de possíveis ingredientes para a sopa. Os ingredientes serão armazenados como chaves, e os valores começarão como falso para que os jogadores só recebam o que selecionarem.

Use pairs() para ver o que foi escolhido, e depois ipairs() para imprimir a lista de ingredientes.

  1. Crie um novo dicionário chamado menu. Adicione 3 - 5 pares chave-valor onde a chave é o ingrediente e o valor é falso.


    local menu = {
    couve = false,
    caraca = false,
    tomate = false,
    mi noodles = false,
    }
  2. Abaixo do dicionário de menu, adicione um array vazio que será preenchido com as escolhas do cliente depois.


    -- Sopa do cliente
    local selectedIngredients = {}
  3. Use pairs() para verificar se cada ingrediente no dicionário está marcado como verdadeiro ou falso. Se verdadeiro, adicione o ingrediente à sopa.


    -- Sopa do cliente
    local selectedIngredients = {}
    -- Adiciona as escolhas do cliente à sopa
    for menuChoice, value in pairs(menu) do
    if value then
    table.insert(selectedIngredients, menuChoice)
    end
    end
  4. Repita o pedido para o cliente. No script, codifique o seguinte abaixo.

    • Verifique se há um item de menu em selectedIngredients. Se sim, imprima "Você pediu sopa com: ".
    • Use ipairs() para passar pelo array selectedIngredients e imprimir cada ingrediente.
    • Teste alterando pelo menos um item do menu para verdadeiro.

    -- Imprime o pedido de sopa de "selectedIngredients"
    if #selectedIngredients > 0 then
    print("Você pediu sopa com: ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    end
  5. Na instrução if que verifica se há um item do menu, adicione uma condição else que informa aos clientes se nenhum ingrediente foi selecionado.


    if #selectedIngredients > 0 then
    print("Você pediu sopa com: ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    else
    print("Nada foi selecionado. Você não está com fome?")
    end

Desafios Opcionais

Aqui estão alguns desafios que aplicam o uso de pairs e ipairs de diferentes maneiras. Tente ver se você consegue criar o código para estes.

Desafio: Criar um NPC Garçom Em vez de usar a janela de saída, use o NPC do Introdução a Arrays para criar um garçom que pegue os pedidos dos clientes.

Desafio: Permitir Que Jogadores Façam Pedidos Permita que os jogadores selecionem um ingrediente tocando uma parte física, como um prompt de proximidade. Para mais informações, veja Prompts de Proximidade.

Desafio Avançado: Simulador de Sopa para Mim Crie um simulador de restaurante onde os jogadores são os chefs! Os jogadores terão que reunir ingredientes para corresponder ao pedido feito a eles pelo garçom.

  1. Crie objetos de jogo para 3 - 5 ingredientes diferentes.
  2. Crie 3 - 5 receitas usando dicionários similares ao que foi apresentado nesta lição.
  3. Crie um array que mantenha todas as receitas.
  4. Selecione aleatoriamente uma receita e use um NPC para informar aos jogadores quais são os ingredientes.
  5. Crie um novo dicionário para fazer uma receita com base nos ingredientes dos objetos que o jogador toca.
  6. Compare a receita do jogador com a receita escolhida pelo NPC.
  7. Aumente o desafio adicionando uma condição extra, como um temporizador.
©2026 Roblox Corporation, Roblox, o logotipo Roblox e Powering Imagination estão entre nossas marcas registradas e não registradas nos EUA e em outros países.