Lua - Variáveis

Uma variável nada mais é que um nome dado a uma área de armazenamento que nossos programas podem manipular. Ele pode conter diferentes tipos de valores, incluindo funções e tabelas.

O nome de uma variável pode ser composto de letras, dígitos e o caractere de sublinhado. Deve começar com uma letra ou um sublinhado. Letras maiúsculas e minúsculas são distintas porque Lua faz distinção entre maiúsculas e minúsculas. Existem oito tipos básicos de valores em Lua -

Em Lua, embora não tenhamos tipos de dados variáveis, temos três tipos baseados no escopo da variável.

  • Global variables - Todas as variáveis ​​são consideradas globais, a menos que sejam explicitamente declaradas como locais.

  • Local variables - Quando o tipo é especificado como local para uma variável, seu escopo é limitado com as funções dentro de seu escopo.

  • Table fields - Este é um tipo especial de variável que pode conter qualquer coisa, exceto nada, incluindo funções.

Definição de Variável em Lua

Uma definição de variável significa dizer ao interpretador onde e quanto criar o armazenamento para a variável. Uma definição de variável tem um tipo opcional e contém uma lista de uma ou mais variáveis ​​desse tipo da seguinte forma -

type variable_list;

Aqui, type é opcionalmente local ou tipo especificado tornando-o global, e variable_listpode consistir em um ou mais nomes de identificadores separados por vírgulas. Algumas declarações válidas são mostradas aqui -

local    i, j
local    i
local    a,c

A linha local i, jambos declaram e definem as variáveis ​​i e j; que instrui o interpretador a criar variáveis ​​chamadas i, j e limita o escopo a ser local.

As variáveis ​​podem ser inicializadas (atribuídas a um valor inicial) em sua declaração. O inicializador consiste em um sinal de igual seguido por uma expressão constante como segue -

type variable_list = value_list;

Alguns exemplos são -

local d , f = 5 ,10     --declaration of d and f as local variables. 
d , f = 5, 10;          --declaration of d and f as global variables. 
d, f = 10               --[[declaration of d and f as global variables. 
                           Here value of f is nil --]]

Para definição sem um inicializador: variáveis ​​com duração de armazenamento estático são inicializadas implicitamente com nil.

Declaração de variável em Lua

Como você pode ver nos exemplos acima, as atribuições para variáveis ​​múltiplas seguem um formato lista_variável e lista_valor. No exemplo acimalocal d, f = 5,10 temos d e f na lista_variável e 5 e 10 na lista de valores.

A atribuição de valor em Lua ocorre como a primeira variável na lista_variável com o primeiro valor na lista_valor e assim por diante. Portanto, o valor de d é 5 e o valor de f é 10.

Exemplo

Tente o exemplo a seguir, onde as variáveis ​​foram declaradas no topo, mas foram definidas e inicializadas dentro da função principal -

-- Variable definition:
local a, b

-- Initialization
a = 10
b = 30

print("value of a:", a)

print("value of b:", b)

-- Swapping of variables
b, a = a, b

print("value of a:", a)

print("value of b:", b)

f = 70.0/3.0
print("value of f", f)

Quando o código acima é construído e executado, ele produz o seguinte resultado -

value of a:	10
value of b:	30
value of a:	30
value of b:	10
value of f	23.333333333333

Lvalues ​​e Rvalues ​​na Lua

Existem dois tipos de expressões em Lua -

  • lvalue- As expressões que se referem a um local da memória são chamadas de expressão "lvalue". Um lvalue pode aparecer como o lado esquerdo ou direito de uma atribuição.

  • rvalue- O termo rvalue refere-se a um valor de dados que é armazenado em algum endereço da memória. Um rvalue é uma expressão que não pode ter um valor atribuído a ela, o que significa que um rvalue pode aparecer no lado direito, mas não no lado esquerdo de uma atribuição.

As variáveis ​​são lvalues ​​e, portanto, podem aparecer no lado esquerdo de uma atribuição. Literais numéricos são rvalues ​​e, portanto, não podem ser atribuídos e não podem aparecer no lado esquerdo. A seguir está uma declaração válida -

g = 20

Mas a seguir não é uma declaração válida e geraria um erro de tempo de construção -

10 = 20

Na linguagem de programação Lua, além dos tipos de atribuição acima, é possível ter vários lvalues ​​e rvalues ​​no mesmo comando. É mostrado abaixo.

g,l = 20,30

Na declaração acima, 20 é atribuído a ge 30 é atribuído a l.