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
Section titled “Arrays”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])
Primeiro elementoSegundo elementoTerceiro elemento
Flexibilidade de Tipos
Section titled “Flexibilidade de Tipos”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])
12trueLua
Adicionando Elementos
Section titled “Adicionando Elementos”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])
Primeiro elementoSegundo elementoTerceiro elementoUltimo elemento
Percorrendo Arrays
Section titled “Percorrendo Arrays”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 doprint(meuArray[i])end
Primeiro elementoSegundo elementoTerceiro elemento
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) doprint(i, v)end
1 Primeiro elemento2 Segundo elemento3 Terceiro elemento
Dicionários
Section titled “Dicionários”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",}
MilianoDesenvolvedor
Acessando Valores
Section titled “Acessando Valores”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)
MilianoDesenvolvedor
Alterando Valores
Section titled “Alterando Valores”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"])
FabricioDesenvolvedor de Jogos
Adicionando Elementos
Section titled “Adicionando Elementos”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"])
FabricioDesenvolvedor de Jogos
Percorrendo Dicionários
Section titled “Percorrendo Dicionários”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
nome Milianoprofissao Desenvolvedor
Navegando por um Dicionário
Section titled “Navegando por um Dicionário”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 22print(idade)
22
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)
2224