Menu
Coddy logo textTech

pairs() vs. ipairs()

Parte da seção Lógica e Fluxo do Journey de Lua da Coddy — lição 3 de 54.

Agora que você aprendeu tanto pairs() quanto ipairs(), é importante entender quando usar cada um. A escolha depende inteiramente da estrutura da sua tabela e do que você está tentando realizar.

Use ipairs() quando você tem uma tabela estilo lista com chaves inteiras sequenciais começando em 1. Ele processa os elementos em ordem e para no primeiro valor nil, tornando-o perfeito para arrays onde a ordem importa.

Use pairs() quando sua tabela tiver chaves de string, tipos de chave mistos ou quando você precisar acessar todas as entradas, independentemente de lacunas. Ele itera por cada par chave-valor na tabela sem nenhuma ordem específica.

Considere esta tabela mista:

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

Se você usar ipairs(), verá apenas as três strings de nível. Se você usar pairs(), verá todas as cinco entradas, incluindo as chaves de string.

challenge icon

Desafio

Fácil

Escreva uma função countSequentialItems que recebe uma tabela data e retorna a contagem de itens sequenciais com chaves inteiras.

Use ipairs() para contar quantos itens existem na parte sequencial da tabela (começando do índice 1 até o primeiro nil). Isso ajudará você a entender a diferença entre ipairs() e pairs() ao trabalhar com tabelas mistas.

Parâmetros:

  • data (tabela): Uma tabela mista contendo tanto chaves inteiras sequenciais quanto chaves de string

Retorna: O número de itens sequenciais (número)

Experimente você mesmo

function countSequentialItems(data)
    -- Escreva o código aqui
end
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e Fluxo