Tabelas Lua
As tabelas Lua são a estrutura de dados primária usada para organizar e armazenar dados.
Eles são um tipo de dados versátil que pode ser usado para uma variedade de propósitos, incluindo arrays, dicionários e objetos.
As tabelas são implementadas como matrizes associativas, o que significa que são essencialmente uma coleção de pares chave-valor, onde as chaves e os valores podem ser de qualquer tipo de dados.
Neste artigo, exploraremos o que são as tabelas Lua , como funcionam e como podem ser usadas para resolver problemas de programação do mundo real.
- Tabelas Lua:
- Tabelas Lua – o que são?:
- Criando tabelas Lua:
- Removendo Referência:
- Coleta de lixo:
- Métodos da tabela Lua:
- Lua table.concat(lista, [sep [, i [, j]]]):
- Lua table.insert(lista, [pos,] valor):
- Lua table.remove(list, [pos]):
- Lua table.sort(list [, comp]):
- Lua table.pack(…):
- Lua table.unpack(lista [, i [, j]]):
- Lua table.concat(array, separador):
Tabelas Lua – o que são?
As tabelas Lua são matrizes associativas , também conhecidas como mapas ou dicionários.
Eles são uma coleção de pares chave-valor, onde cada chave é única e mapeia para um valor correspondente. Em Lua, as chaves podem ser de qualquer tipo de dados, exceto nil, e os valores podem ser de qualquer tipo.
Em outras linguagens de programação, as matrizes associativas podem ser implementadas como um tipo de dados integrado, mas em Lua as tabelas são usadas para esse propósito.
As tabelas também podem ser usadas para outros tipos de estruturas de dados, como arrays, listas e filas.
Criando Tabelas Lua
Tabelas em Lua são representadas por chaves {} com pares chave-valor separados por vírgulas.
Os pares chave-valor podem ser separados por dois pontos ou um sinal de igual, e as chaves podem ser strings ou números.
Para criar uma nova tabela em Lua, você pode usar a sintaxe {} de chaves .
mrxtable = {}
Isso cria uma tabela vazia chamada mrxtable. Você pode adicionar pares chave-valor à tabela usando a seguinte sintaxe:
mrxtable[1]= "One"
Aqui uma string “One” foi adicionada à tabela no primeiro índice. No entanto, você também pode usar qualquer outro tipo de dados.
Removendo referência
Uma referência de uma tabela é removida usando a seguinte sintaxe:
mrxtable = nil
Coleta de lixo
A coleta de lixo é uma operação automática em Lua que periodicamente libera memória não mais usada pelo programa.
Quando o coletor de lixo é executado e encontra uma tabela sem referências restantes, ele limpa a memória usada pela tabela. Isso o torna reutilizável para outros fins.
Em Lua, quando atribuímos uma tabela 'x' a outra variável 'y', tanto 'x' quanto 'y' referenciam a mesma memória. Isso significa que nenhuma memória separada é alocada para 'y'; em vez disso, ele simplesmente aponta para o mesmo local de memória que 'x'.
Mesmo que 'x' seja definido como nil, a tabela ainda estará acessível para 'y', porque ambas as variáveis apontam para o mesmo local de memória. No entanto, quando não há referências à tabela, ela se torna elegível para coleta de lixo.
O exemplo a seguir demonstra as operações em uma tabela em Lua:
Example:
Métodos de Tabela Lua
Além das operações básicas em tabelas Lua que discutimos acima, Lua fornece vários métodos integrados para manipulação de tabelas.
Nesta seção, exploraremos alguns dos métodos de tabela Lua mais comumente usados.
Lua table.concat(lista, [sep [, i [, j]]])
Esta função concatena os elementos da tabela em uma string. É preciso um separador opcional como argumento para separar os elementos na string resultante. A função retorna uma string concatenada.
A lista é a tabela a ser concatenada. Ele pode conter qualquer combinação de strings e valores numéricos.
O sep(opcional) é o separador entre cada elemento na string concatenada. Por padrão, o separador é uma string vazia.
Aqui i(opcional) é o índice do primeiro elemento a ser concatenado. Por padrão, o primeiro elemento é usado.
Por outro lado, j(opcional) é o índice do último elemento a ser concatenado. Por padrão, o último elemento é usado.
Segue um exemplo para demonstração:
Example:
Lua table.insert(lista, [pos,] valor)
Usado para inserir um valor em uma determinada lista em uma posição especificada.
O argumento list é a tabela na qual o valor será inserido, pos é o índice opcional no qual adicionar o valor (o padrão é o final da lista) enquanto value é o valor a ser adicionado.
Vejamos um exemplo:
Example:
Lua table.remove(list, [pos])
Esta função é usada para remover um elemento de uma tabela em uma determinada posição.
Ele retorna o elemento removido e desloca todos os elementos em posições maiores que a posição do elemento removido para baixo em um.
O parâmetro list é a tabela da qual o elemento deve ser removido.
O parâmetro pos é a posição opcional do elemento a ser removido. Se pos não for fornecido, o último elemento da tabela será descartado.
O exemplo abaixo examina o método table.remove() :
Example:
Lua table.sort(list [, comp])
O método table.sort(list [, comp]) em Lua classifica os elementos da tabela em ordem crescente. O método pode receber uma função opcional comp que define a ordem dos elementos a serem classificados.
O parâmetro list é a tabela a ser classificada. Pode ser uma lista ou um array associativo. Se a lista for um array associativo, os índices dos elementos não serão preservados após a ordenação.
O parâmetro opcional comp compara dois elementos em uma tabela. Deve retornar true se o primeiro elemento for menor que o segundo elemento, false se forem iguais e nulo caso contrário. Se comp não for fornecido, a ordem padrão é o operador menor que (<) para valores numéricos e o operador menor ou igual a ( <= ) para valores de sequência.
O exemplo a seguir é usado para a ilustração de table.sort() :
Example:
Lua table.pack(…)
Esta função cria uma nova tabela com todos os argumentos passados para ela.
A função retorna uma tabela com um campo, que contém o número total de argumentos. Além disso, contém elementos indexados de 1 a n .
Se n não for definido explicitamente , ele será definido como o comprimento da lista de argumentos.
O exemplo abaixo é usado para demonstrar a função table.pack() :
Example:
Lua table.unpack(lista [, i [, j]])
Os elementos da tabela são retornados como valores separados por esse método.
Usando o índice inicial i e o índice final j , ele retorna elementos entre esses índices.
Os valores padrão para i e j são 1 e o comprimento da tabela, respectivamente.
O exemplo a seguir implementa o método table.unpack() em Lua:
Example:
Lua table.concat(array, separador)
Uma tabela semelhante a um array pode ser concatenada em uma string usando esta função Lua.
Aqui, array é a tabela que contém os elementos a serem concatenados e separador é uma string opcional a ser inserida entre cada elemento na string final.
O separador padrão é uma string vazia se o separador não for fornecido.
Vamos explorar o método table.concat() através de um exemplo: