Uma variável é um nome que contém um valor. Os valores das variáveis podem ser números, strings, booleanos, tipos de dados e mais.
Nomear variáveis
Os nomes das variáveis podem ser qualquer string não reservada de letras, dígitos e sublinhados que não comece com um dígito.
LETTERS -- válido
a1 -- válido
var_name -- válido
_test -- válido
if -- NÃO válido
25th -- NÃO válidoOs nomes das variáveis são sensíveis a maiúsculas e minúsculas, então TestVar e TESTVAR são nomes diferentes. Evite nomear variáveis com um sublinhado e todas as letras maiúsculas, como _VERSION, porque o Luau pode reservá-las para variáveis globais internas.
Melhores práticas
É uma boa prática escrever palavras completamente. Abreviações geralmente tornam o código mais fácil de escrever, mas mais difícil de ler. Seguir práticas comuns de nomenclatura ao nomear suas variáveis pode ajudar você e outros a entender seu significado ou propósito:
- Use nomes em PascalCase para objetos semelhantes a classes e enums.
- Use nomes em PascalCase para todas as APIs do Roblox. APIs em camelCase estão em sua maioria obsoletas.
- Use nomes em camelCase para variáveis locais, valores de membros e funções.
- Não capitalize acrônimos inteiros dentro dos nomes. Por exemplo, escreva aJsonVariable ou MakeHttpCall.
Nomes reservados
O Luau reserva as seguintes palavras-chave, então você não pode usá-las para nomear variáveis ou funções:
- and
- for
- or
- break
- function
- repeat
- do
- if
- return
- else
- in
- then
- elseif
- local
- true
- end
- nil
- until
- false
- not
- while
Atribuir valores
Para criar uma variável e atribuir um valor a ela, use o operador =. Coloque a variável à esquerda do = e o valor à direita. Se você não colocar um valor, o valor será nil.
As variáveis podem ter escopos globais ou locais escopos. Elas têm escopo global por padrão, mas é quase sempre melhor criá-las com escopo local, porque o Luau acessa variáveis locais mais rapidamente do que globais. Para dar a uma variável escopo local, coloque a palavra-chave local antes do nome da variável ao atribuir um valor a ela. Para dar escopo local e também evitar a reatribuição, use const em vez de local. Para mais informações, veja Escopo.
local nilVar
local x = 10
local word = "Olá"
local boolean = true
print(nilVar) -- nil
print(x) -- 10
print(word) -- Olá
print(boolean) -- trueAtribuir valores a várias variáveis
Você pode atribuir valores a várias variáveis em uma linha, separando cada par variável-valor com uma vírgula. Se você tiver mais variáveis do que valores, o Luau atribui nil às variáveis extras. Se você tiver mais valores do que variáveis, o Luau não atribui os valores extras a nenhuma variável.
local a, b, c = 1, 2, 3
local d, e, f = 4, 5 -- variável extra
local g, h = 7, 8, 9 -- valor extra
print(a, b, c) -- 1, 2, 3
print(d, e, f) -- 4, 5, nil
print(g, h) -- 7, 8Mudar valores
Para mudar o valor de uma variável, atribua outro valor a ela.
local x, y = 10, 20
print(x) -- 10
print(y) -- 20
x = 1000
y = 2000
print(x) -- 1000
print(y) -- 2000Variáveis const
Para criar uma variável que você não pode reatribuir, use const em vez de local. Tentar reatribuir uma variável const causa um erro, inclusive através de um operador de atribuição composta como +=.
const MAX_HEALTH = 100
MAX_HEALTH = 50 -- erro: não é possível reatribuir uma variável const
MAX_HEALTH += 1 -- erro: não é possível reatribuir uma variável constAssim como local, const aceita uma anotação de tipo, como const MAX_HEALTH: number = 100.
Você também pode declarar uma função com const, o que impede a reatribuição do nome da função.
const function addOneAndTwo()
local result = 1 + 2
print(result)
end
addOneAndTwo = nil -- erro: não é possível reatribuir uma variável constconst torna a variável em si imutável, não o valor que ela contém. Se uma variável const contém uma tabela, você ainda pode mudar o conteúdo da tabela. Para tornar o conteúdo imutável também, use table.freeze().
const SETTINGS = { volume = 0 }
SETTINGS.volume = 1 -- ok, muda um valor dentro da tabela
SETTINGS = {} -- erro: não é possível reatribuir uma variável constDiferente das palavras-chave em Nomes reservados, const é contextual. O Luau só trata como uma palavra-chave onde local é válido, então o código existente que usa const como um nome de variável ainda funciona.
local const = 1
print(const) -- 1
const = 2 -- ok, `const` é um nome de variável aquiPara mais informações e casos extremos, veja a documentação do Luau.