Ir para conteúdo

#7 - aula de scripting lua - Tabelas


Poccnn

Posts Recomendados

Tabelas

 

Aula anterior, caso não tenha lido.

 

 

aulaLogo.jpg

 

Palavras e caracteres reservados que será usada nessa aula:

= { } ( ) function return end

 

 

Uma tabela é criada quando se faz do uso de chaves, tanto para abrir quanto para fechar a estrutura.

Isso é uma tabela:

{}

 

 

Para quê serve uma tabela?

Uma tabela serve para alocar dados (informações) de todo tipo, desde números, textos, valores booleanos, funções e até mesmo tabelas.

Tabela é versátil; tabela deixa o código mais inteligível; tabela também serve como construtor de estruturas de objetos.

 

 

Um exemplo de uma tabela versátil:

{

         true,

         function(a) return a end,

         “Olá mundo”,

         {

                   “uma nova tabela dentro da tabela”,

                   Function(a) return a*a end,

                   50,

         },

}

Uma coisa que não foi dita, mas requer-se que seja explicada; todos os valores inseridos dentro de uma tabela necessitam de uma vírgula (“,”) ao final dele para finalizar um dado de outro, com exceção do ultimo valor que pode ser omitido a vírgula.

 

 

 

Todos os dados inseridos dentro de uma tabela, ocupam uma posição e essa posição, caso não seja declarada, é uma lista numérica sucessiva que se inicia do numero 1 (um) até o infinito.

Mesmo não sendo declarado o index (posição na tabela), todo dado inserido na tabela vai ocupar a ultima posição+1 da tabela; portanto se uma tabela está vazia (index 0), ao ser alocado um dado na tabela, ela vai ocupar a primeira posição (index 0+1).

Mesmo que o index (posição da tabela) não esteja explicito na tabela (declarado nela) - eles estão ocultos - mas existem.

 

 

Veja a mesma tabela acima, só que com os index “ocultos” que deixei “visível” para entender que mesmo que eles não estejam no código, eles existem.

 

 { -- abre a tabela

         [1] = true,

         [2] = function(a) return a end,

         [3] = “Ola mundo”,

         [4] = {-- abre uma nova tabela.

                   [1] = “uma nova tabela dentro da tabela”,

                   [2] = function(a) return a*a end,

                   [3] = 50,

         },-- fecha a tabela

} -- fecha a tabela

 

 

 

 

Tu poderás declarar um index (posição) para um determinado dado:

{

         [22]            = “posição 22”,

         [100]          = “posição 100”,

         [0]              = “posição 0 (zero)”,

         [-2]             = “posição -2”

}

 

 

Mas tabelas não só comportam index numéricos, tu podes por uma string como index, tu podes por uma variável como index, tu podes por uma tabela como index; veja esse exemplo:

{

         [“string”]    = “isso é uma string como index”,

         nome          = “isso é uma variável como index”,

         [{1,2}]        = “isso é uma tabela como index”

}

 

 

Para inserir dados à tabela, tu poderá declarar diretamente na tabela ou inserir dados por atribuição ou usar da função table.insert(tabela,[posição,] dado).

Primeiro que a tabela precisa estar atribuída a uma variável:

Tabela = {}

 

 

Aparti daí, podemos acessar a tabela chamando pelo nome da variável atribuída a ela (Tabela).

 

Exemplo de inserção de valores pela função table.insert:

Tabela = {} – tabela vazia.

table.insert(Tabela,20) -- sem usar do parâmetro de posição.

table.insert(Tabela,2,30) -- usando o parâmetro de posição.

table.insert(Tabela,1,10) -- não muda o valor, apenas desloca os outros valores.

 

 

print(Tabela[1]) >> 10

print(Tabela[2]) >> 20

print(Tabela[3]) >> 30

Perceba que a célula dois foi deslocada para a posição três da tabela, mesmo ela sendo declarada como posição dois. Ao adicionar novos valores na tabela usando a função table.insert, todas as demais células maiores que ela, serão deslocadas. 

 

 

Um exemplo de inserção de dados em uma tabela usando o caractere de atribuição:

 

Tabela = {} – tabela vazia.

Tabela[1] = 20

Tabela[2] = 30

Tabela[1] = 10 -- mudando o valor da posição 1 da tabela, não desloca.

 

 

print(Tabela[1]) >> 10

print(Tabela[2]) >> 30

print(Tabela[3]) >> nil

 

 

Mais uma forma de inserir dados a tabela:

 

Tabela = {} – tabela vazia.

Tabela.nome = “Poccnn”

 

 

-Agora; e como se faz para pegar os valores de dentro de tabelas?

-Uma boa questão; vamos elucidar.

 

 

Primeiro que a tabela precisa estar atribuída a uma variável:

 

tab = {}

 

 

Aparti daí, podemos acessar a tabela chamando pelo nome da variável atribuída a ela (tab).

 

tab = {

Nomedavariavel = “essa variável contem esse texto”,

[“number”] = 546789,

digaoi = function() return ‘oi’ end,

[25] = 25,

tabela = {

                   umNumero = 50,

                   soma = function(a,b) return a+b end,

                   [1] = “index 1”,

                   [“txt”] = “um texto”

}

}

 

 

-Se quisermos pegar o valor atribuído a variável Nomedavariavel, como faremos?

 

 

Primeiro se pega a tabela através do nome da variável atribuído a ela, que no nosso caso chama-se tab.

Agora com a tabela já selecionada, vamos à busca do que está dentro dela e do que queremos que no caso é o valor atribuído a variável Nomedavariavel.

 

 

Como estamos lidando com atribuições a variáveis, não podemos concatenar uma palavra à outra; para fazer esse tipo de chamada, usamos o caractere de ponto final (.)

 

print(tab.Nomedavariavel)     saída >> essa variável contem esse texto

print(tab.digaoi())                   saída >> oi – chamando uma função de dentro da tabela.

 

 

-Agora; e caso não seja uma variável, mas seja um index, como proceder?

 

 

Utilizando os colchetes no lugar do caractere de ponto final (.)

print(tab[25])       saída >> 25

 

 

-E caso seja uma string, como proceder?

 

 

Pondo a string entre colchetes ou usando também o caractere de ponto final.

print(tab[“number”])     saída >>  546789

print(tab.number)         saída >> 546789

 

 

-E caso exista uma tabela dentro da tabela, como pegar os dados dentro dessa outra tabela?

 

 

Da mesma forma que a primeiro, seguindo o caminho até o dado que tu queres.

print(tab.tabela.umNumero)            saída >> 50

print(tab.tabela.soma(10,20))         saída >> 30

print(tab.tabela[1])                          saída >> index 1

print(tab.tabela[“txt”])                     saída >> um texto

print(tab.tabela.txt)                         saída >> um texto

 

 

No código que vocês criaram em aulas anteriores, adicionem tabela e insiram dados a ela na qual o index não seja somente numérico e a atribuição não seja de um tipo só.

Inté a próxima aula.

aulaLogo.jpg.44c6046e86caaf26d0f023e242e02b42.jpg

Editado por Poccnn
Link para o comentário
Compartilhar em outros sites

  • Poccnn pinned e featured this tópico
×
×
  • Criar Novo...