Os conceitos básicos sobre variáveis foi discutido em Portugol sendo a leitura recomendada.

A declaração de variáveis em Lua é feita informando o tipo de dados antes do nome da variável como exemplificado abaixo:

Sintaxe
local tipo_dado nome_variavel

As variáveis não declaradas utilizando local são consideradas variáveis globais. O escopo de variáveis será visto mais adiante.

Exemplo 1
local tipo_dado nome_variavel
tipo_dado nome_variavel -- variável global

A linguagem Lua permite que essa declaração seja feita em apenas uma linha. A sintaxe é semelhante ao que foi visto no exemplo acima. Nesse tipo de declaração os nomes das variáveis são separados por (,). A atribuição não é permitida em linha.

Sintaxe
tipo_de_dado nome_variavel1, nome_variavel2, nome_variavelN
Exemplo 2
local var1,var2,var3

A atribuição de valor a uma variável é feita utilizando o operador (=) podendo ser na mesma linha ou não.

Sintaxe
local tipo_de_dado nome_variavel1 = valor
Exemplo 3
local valor = 1

A palavra reservada local é opcional na declaração de variáveis. Toda variável criada sem a utilização dessa palavra reservada é internamente declarada como global. Para variáveis locais é necessário utilizar local.

Sintaxe
local tipo_dado nome_variavel
tipo_dado nome_variavel
Exemplo 4
local tipo_dado nome_variavel
tipo_dado nome_variavel  --global

As variáveis e constantes podem ser declaradas dentro ou fora de funções. Quando declaradas fora de funções tem escopo global e dentro de funções o escopo é local.

A linguagem Lua possui a característica de inferência de dados. Isso significa que quanto criamos uma variável não precisamos declarar seu tipo. A inferência do tipo de dado está associada ao valor atribuído à variável.

Sintaxe
local tipo_dado nome_variavel
global tipo_dado nome_variavel
Exemplo 5
local numero = 10
texto = "string"

Identificadores são nomes que utilizamos para identificar variáveis , funções e outros. Na linguagem Lua, assim como em várias outras, precisamos seguir alguma regras:

Regras
  1. Iniciar com letras A-Z, a-z ou underscore
  2. Palavras reservadas não podem ser utilizadas
  3. Não podem iniciar com dígitos 0-9 ou caracteres especiais como $ , %, , # e outros
Exemplos
--válidos
nome
NOME
_nome

--inválidos
1nome
$nome
123

Agora que já temos conhecimento sobre os tipos básicos de dados presentes na linguagem Lua, vamos ver alguns exemplos de declaração de variáveis nessa linguagem.

Exemplo 6

--number
local number var1 = 10
local var1 = 10 --inferência
local number var2 = 7.77
local number var3 = -1

--strings
local var1 = [[terceira forma de declarar string]] --inferência
local string var2 = "uma string em Lua"
local string var3 = 'Outra String Em Lua'

--Vetores e matrizes
local string vetor= {"Lua", "Tutorial"}
local var1 = {{1,2},{3,4}} //inferência

--boolean
local var = true

Os tipos de dados function, thread, table e outros são estudados em seus respectivos tópicos com exemplos.

Abaixo é apresentada a tabela contendo a lista de palavras reservadas mencionadas nas regras acima que não podem ser utilizadas como identificadores(Variáveis, funções e outros):

Tab. 1: Palavras reservadas
and elseif function nil
return while break end
if not then do
false in or true
else for global local
repeat until - -

Com o uso de inferência da linguagem, em alguns momentos precisamos verificar que tipo de dados uma que variável possui. Nessa situação utilizamos a função type:

Sintaxe
type (v)
Onde
v: variável que desejamos descobrir o tipo
Retorno
string contendo nome do tipo de dado de v
Exemplo 7
var1 = 1.99
print(type(var1))
Saída
number
  1. 12/09/2024 - revisão 2 - Correção em link Portugol e outros pequenos ajustes gramaticais
  2. 03/10/2023 - revisão 1 - Correção em referências e erros gramaticais
  3. 26/05/2023 - versão inicial