Skip to content

Tabelas

As tabelas em Lua são uma estrutura de dados extremamente versátil, podendo ser utilizadas tanto como arrays quanto como dicionários. Vejamos alguns exemplos para ilustrar esses casos:

Arrays são estruturas de dados que permitem armazenar uma coleção de elementos sequenciais, onde cada elemento é identificado por um índice numérico. Os arrays são implementados utilizando tabelas, onde os índices numéricos são utilizados para acessar os elementos da tabela.

local meuArray = {"Primeiro elemento", "Segundo elemento", "Terceiro elemento"}
print(meuArray[1])
print(meuArray[2])
print(meuArray[3])

Uma das características interessantes dos arrays em Lua é a flexibilidade em relação aos tipos de dados armazenados. Ao contrário de algumas linguagens de programação, não é necessário que todos os elementos de um array em Lua sejam do mesmo tipo.

local meuArray = {1, 2, true, "Lua"}
print(meuArray[1])
print(meuArray[2])
print(meuArray[3])
print(meuArray[4])

Em Lua, é possível adicionar novos elementos em um array de forma simples, sem a necessidade de utilizar funções específicas. Basta atribuir um valor a um novo índice do array.

local meuArray = {}
meuArray[1] = "Primeiro elemento"
meuArray[2] = "Segundo elemento"
meuArray[3] = "Terceiro elemento"
meuArray[#meuArray + 1] = "Último elemento"
print(meuArray[1])
print(meuArray[2])
print(meuArray[3])
print(meuArray[4])

Para percorrer um array em Lua, é possível utilizar um loop for com um índice numérico. O loop for é executado até que o índice atingir o último elemento do array.

local meuArray = {"Primeiro elemento", "Segundo elemento", "Terceiro elemento"}
for i = 1, #meuArray do
print(meuArray[i])
end

Outra forma conveniente de iterar em um array é utilizando a função ipairs(), que retorna pares índice-valor. Aqui está um exemplo:

local meuArray = {"Primeiro elemento", "Segundo elemento", "Terceiro elemento"}
for i, v in ipairs(meuArray) do
print(i, v)
end

Diferentes dos arrays, que utilizam índices numéricos, os dicionários são estruturas de dados que utilizam pares de chave e valor para armazenar informações. Os dicionários são frequentemente usados para representar objetos do mundo real.

local meuDicionario = {
nome = "Miliano",
profissao = "Desenvolvedor",
}

Para acessar os valores de um dicionário, basta utilizar o nome da chave correspondente. O lua utiliza pontos para acessar as chaves de um dicionário.

local meuDicionario = {
nome = "Miliano",
profissao = "Desenvolvedor",
}
print(meuDicionario.nome)
print(meuDicionario.profissao)

Para alterar os valores de um dicionário, basta utilizar o nome da chave correspondente. O lua utiliza pontos para acessar as chaves de um dicionário.

local meuDicionario = {
nome = "Miliano",
profissao = "Desenvolvedor",
}
meuDicionario["nome"] = "Fabricio"
meuDicionario["profissao"] = "Desenvolvedor de Jogos"
print(meuDicionario["nome"])
print(meuDicionario["profissao"])

Para adicionar elementos a um dicionário, basta utilizar o nome da chave correspondente. O lua utiliza pontos para acessar as chaves de um dicionário.

local meuDicionario = {}
meuDicionario["nome"] = "Fabricio"
meuDicionario["profissao"] = "Desenvolvedor de Jogos"
print(meuDicionario["nome"])
print(meuDicionario["profissao"])

Para percorrer um dicionário em Lua, é possível utilizar um loop for com um índice numérico. O loop for é executado até que o índice atingir o último elemento do dicionário.

local meuDicionario = {
nome = "Miliano",
profissao = "Desenvolvedor",
}
for chave, valor in pairs(meuDicionario) do
print(chave, valor)
end

Quando tentamos acessar um índice de um dicionário que não existe, o lua retorna nil. Isso pode causar erros ao tentar acessar o valor de um índice inexistente.

Para evitar problemas podemos utilizar operadores lógicos para verificar se uma chave existe no dicionário.

local meuDicionario = {
nome = "Fernando",
}
local idade = meuDicionario.idade or 22
print(idade)

Também podemos utilizar paresenteses junto com o operador lógico or para verificar se uma chave existe no dicionário.

local pessoa1 = {
idade = 22,
}
local idade1 = ((pessoa1 or {}).idade or 24)
print(idade1)
local pessoa2 = {}
local idade2 = ((pessoa2 or {}).idade or 24)
print(idade2)