Índice
Lua É uma linguagem dinâmica quando se trata de tipos de dados e seus valores, ou seja, não existem definições de nenhum tipo ao se criar uma variável e especificar que se trata de uma string, um número ou mesmo um booleano.As expressões andam de mãos dadas com os valores, que nos permitem realizar operações com eles, que podem variar de operações aritméticas, relacionais e até mesmo condicionais para dar dinamismo aos nossos programas, mas antes de passar para as expressões vamos ver os tipos de valores que nós possuímos em Lua e como eles funcionam dentro da linguagem.
Em Lua Cada valor carrega seu próprio tipo, no qual podemos encontrar oito tipos diferentes destes: nil, booleano, número, string, dados do usuário, função, thread e tabela, onde com a função modelo () podemos saber o nome do tipo do valor fornecido. Vamos ver um exemplo simples de como Lua interpretar isso de acordo com modelo ():
Como vemos que o tipo é dado pelo valor que carrega e a função designada nos ajuda a saber o que é, podemos ver que mesmo no último caso da variável H o resultado é string e isso porque a função modelo () é sempre string. Desde que vimos como Lua interpretar os tipos de dados, vamos examinar cada um deles em detalhes:
NadaEste é um tipo de valor cuja propriedade principal é ser diferente de outros valores. Como vimos no último tutorial, uma variável global tem o valor por padrão nada e se quisermos eliminá-lo, atribuímos esse valor, podemos até usá-lo para representar a ausência de um valor útil.
boleanoOs valores booleanos, como nas demais linguagens de programação, têm dois valores, verdadeiro e falso, mas, ao contrário de outras linguagens, esse tipo de dado não possui domínio total sobre as condições, pois qualquer um pode representar uma condição.
NúmeroEste tipo de dados representa números inteiros e decimais. Lua não tem um tipo de valor inteiro e não precisa dele, uma vez que Lua pode representar qualquer inteiro de 32 bits sem problemas de arredondamento, mas o mais interessante sobre a linguagem é que podemos compilá-lo para usar outro tipo, como inteiros longos ou flutuantes, o que é bastante útil para casos em que o hardware não tem suporte para decimais.
CordaAs cordas em Lua Eles são uma sequência de caracteres, são valores imutáveis, ou seja, não podemos alterar um caractere dentro da string. Eles são tratados pela memória automática da linguagem como o resto dos objetos e a atribuição da string pode ser feita com aspas simples ou duplas.
TabelaO tipo de dados da tabela implementa um array associativo, que é um array que pode ser indexado não apenas com números, mas também com strings ou qualquer outro valor de linguagem, exceto nil. As tabelas não têm um tamanho fixo, pelo que podemos incluir tantos elementos quantos quisermos e com eles podemos representar módulos, pacotes e objetos semelhantes. Finalmente, sua criação é tão simples quanto usar os colchetes {} na inicialização da tabela.
RecursosAs funções em Lua eles têm um comportamento bastante peculiar, podemos salvá-los em variáveis, passá-los como argumentos para outras funções e retorná-los até mesmo como resultados, onde Lua você pode chamar essas funções escritas na própria linguagem e também em C.
Dados do usuárioO tipo de dados dados do usuário permite armazenar em variáveis de Lua informações arbitrárias de C. Não tem operações predefinidas em Lua, com exceção dos testes de atribuição e igualdade, onde a principal função desse tipo é representar novos tipos como os criados por um aplicativo ou uma biblioteca escrita em C.
Como podemos ver, os tipos não diferem muito do que podemos encontrar nas linguagens atuais, mas o certo é que a simplicidade que temos para representá-los é muito maior, então vamos ver o papel das expressões e como podemos usá-las com nossos valores.
As operações aritméticas são extremamente importantes para qualquer programa e é importante saber como manipulá-las e quais restrições podem existir na linguagem que estamos usando. Lua suporta os operadores convencionais aos quais estamos acostumados: adição, subtração, multiplicação, divisão, exponencial, porcentagem e negação.
Vamos ver então um código simples onde demonstramos o uso de alguns operadores de Lua:
x = 8 + 5 y = 9 - 2 impressão (x * y% 0,01)Usamos adição, subtração e divisão por 2 no resultado de uma operação de multiplicação, vamos ver como a resposta do interpretador quando executamos nosso código através do console:
PROLONGAR
Como podemos ver, Lua não difere muito do resto das linguagens para operações aritméticas, mas sua simplicidade para escrever código torna bastante fácil de manusear para o desenvolvimento de programas.Lua como outras linguagens, ele nos dá operadores relacionais como maior que>, menor que <, menor ou igual =, igual == e negação ~ =. Vemos que a única que talvez difira é a negação, mas depois que nos acostumarmos não haverá problemas com seu uso.
Todos esses operadores podem retornar verdadeiro ou falso, onde podemos até mesmo aplicar o operador de igualdade e o operador de negação a dois valores. Essas comparações Lua ele os faz com base no tipo, além de outros fatores, vamos ver no código a seguir onde a comparação é feita com base no mesmo objeto:
a = {}; a.x = 1; a.y = 0 b = {}; b.x = 1; b.y = 0 c = aOnde, se compararmos o mesmo, o resultado da operação nos dá que a é igual a c, mas que a é diferente de b, isso se deve ao fato de que eles são o mesmo objeto. Além disso, devemos ter muito cuidado ao comparar diferentes tipos, já que por exemplo 6 é diferente de "6" e se fizermos algo como "3" <"8" Lua vai dar um erro, uma vez que estamos mixando as cordas.
Os operadores lógicos em Lua eles são o e, ou e não. Quando uma comparação é feita usando esses operadores, o primeiro argumento será retornado se for falso, caso contrário, o segundo será retornado.Vamos ver uma série de exemplos no console interativo para demonstrar o acima mencionado.
PROLONGAR
Para realizar concatenação em Lua é através dos dois pontos, ele muda um pouco a sintaxe em relação a outras linguagens, mas da mesma forma é bastante simples, mas Lua Sempre vai um pouco mais longe e se encontrar um número e houver uma operação de concatenação, ele o converte em uma string, vamos ver dois exemplos simples dessa operação:PROLONGAR
Como vemos para o primeiro caso a operação é realizada sem nenhum problema, e para o segundo caso temos números, Lua converte-os automaticamente em string. É importante lembrar que as strings são imutáveis, portanto, essa operação sempre cria uma nova string sem fazer nenhuma modificação em seu operando.Por fim, temos os construtores, que são expressões que nos permitem criar e inicializar tabelas, esse recurso é exclusivo para Lua e é um de seus mecanismos mais versáteis e poderosos. Podemos usar um construtor vazio sem nenhum problema apenas com os colchetes {} que criará uma tabela vazia como tal. Eles também podem inicializar matrizes ou listas, vejamos um exemplo:
dias = {"Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"}Aqui criamos uma lista com os dias da semana e se queremos acessar seus elementos especificando o índice da mesma que temos, por exemplo para obter quinta-feira seria o índice número 5 ou domingo seria o número 1, desde Lua Ele não inicializa com zero como o resto das linguagens, vamos ver como fica quando o executamos em nosso console:
Também podemos criar nossas próprias matrizes associativas do tipo de valor-chave:
matriz = {x = 26, y = 67}
Mas é importante que para acessar seus valores façamos a referência ao índice com aspas duplas, obteremos o valor nil, vemos nosso funcionamento no console interativo:
Com isso encerramos o tutorial, onde pudemos ver que Lua estende sua simplicidade a todas as arestas que a compõem, desde os tipos dinâmicos com que trata, a maneira simples de fazer atribuições, o manuseio de operadores relacionais e lógicos, além de nos fornecer ferramentas extremamente úteis como concatenações e construtores para fazer nosso experiência com o idioma o mais agradável e agradável possível.Gostou e ajudou este tutorial?Você pode recompensar o autor pressionando este botão para dar a ele um ponto positivo