Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Declaração de variáveis
  2. Case-sensitive
  3. Múltipla atribuição
  4. Escopo
  5. Inferência de dados
  6. Nomeando variáveis e constantes
  7. Exemplos de declaração
  8. Palavras reservadas
  9. Verificar tipos
  10. descartar

Os conceitos básicos sobre variáveis foi discutido em Portugol: Variáveis 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 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 nome_variavel
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
local 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 (=):

Sintaxe
local nome_variavel1 = valor
Exemplo 3
local valor = 1

A linguagem Lua é case-sensitive. Quando declaramos identificadores homônimos em caixa alta e caixa baixa, esses são vistos como identificadores distintos.

Sintaxe
nome_variavel
NOME_VARIAVEL
Exemplo 4
local var = "[uma string]"
local VAR = true;

print(var)
print(VAR)

function funcao(param)
  print(param)
end

funcao(var)

function FUNCAO(param)
  print(param)
end

FUNCAO(VAR)
Saída
[uma string]
true
[uma string]
true

Assunto função pode ser visto com mais detalhes em Lua: Básico > Funções.

Lua suporta a atribuição de múltiplas variáveis em apenas uma linha de código. Isso é feito usando o operador (=) de acordo com a sintaxe mostrada abaixo:

Sintaxe
var1,var2,...,varN = valor1, valor2,...,valorN
Exemplo 5
local x = 1 
local y = "string" 
local z = true

a,b,c = x,y,z

print(a,b,c)
Saída
1	string	true

Assunto função pode ser visto com mais detalhes em Lua: Básico > Funções.

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 nome_variavel = valor

nome_variavel = valor -- global
Exemplo 6
local tipo_dado nome_variavel
--
nome_variavel = 10  --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 nome_variavel = valor

nome_variavel = valor
Exemplo 7
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 8
--number
local number var1 = 10
local var1 = 10 --inferência
local number var2 = 7.77
local number var3 = -1

--strings
local var4 = [[terceira forma de declarar string]] --inferência
local string var5 = "uma string em Lua"
local string var6 = 'Outra String Em Lua'

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

--boolean
local bool var7 = true

--hexadecimal
local number var8 = 0x10 --hexa

--octal
local number var9 = 0o20 --octal

Os tipos de dados function, table e outros, podem ser vistos em suas respectivas seções.

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 o tipo de dado 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 9
var1 = 1.99
print(type(var1))
Saída
number
  1. 11/12/2025 - revisão 4 - Adição: case-sensitive, Múltipla atribuição. Ajuste: Ex. 8
  2. 15/09/2025 - revisão 3 - Ajustes: pontuais, sintaxes, objetivos e target de links internos
  3. 12/09/2024 - revisão 2 - Correção em link Portugol e outros pequenos ajustes gramaticais
  4. 03/10/2023 - revisão 1 - Correção em referências e erros gramaticais
  5. 26/05/2023 - versão inicial