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 elementoFlexibilidade 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])12trueLuaAdicionando 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 elementoPercorrendo 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])endPrimeiro elementoSegundo elementoTerceiro elementoOutra 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)end1 Primeiro elemento2 Segundo elemento3 Terceiro elementoDicioná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",}MilianoDesenvolvedorAcessando 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)MilianoDesenvolvedorAlterando 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 JogosAdicionando 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 JogosPercorrendo 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)endnome Milianoprofissao DesenvolvedorNavegando 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)22També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