Menu
Coddy logo textTech

Folha de Consulta Lua

Última atualização

Hello World e executar código

Lua é minimalista - uma única instrução já roda.

OperaçãoSintaxe
Exibir uma linhaprint("Hello, World!")
Exibir vários valoresprint("x", 1, true)
Escrever sem quebra de linhaio.write("Hi")
Comentário-- this is a comment
Comentário de várias linhas--[[ ... ]]
Concatenar stringsprint("Hi " .. name)
Executar um arquivolua app.lua
Shell interativolua

Variáveis e tipos

Variáveis são globais por padrão; declare locais com local.

OperaçãoSintaxe
Variável locallocal age = 30
Variável globalcount = 0
Atribuição múltiplalocal a, b = 1, 2
Os oito tiposnil, boolean, number, string, table, function, userdata, thread
Nil / booleanosnil, true, false
Verificar tipotype(x) retorna "number"
Converter para númerotonumber("42")
Converter para stringtostring(42)

Strings

Strings são imutáveis; tanto aspas simples quanto duplas funcionam.

OperaçãoSintaxe
Comprimento#s ou string.len(s)
Concatenars1 .. s2
Maiúsculas / minúsculass:upper(), s:lower()
Substrings:sub(1, 3)
Encontrar substrings:find("ell")
Substituir (gsub)s:gsub("a", "b")
Formatarstring.format("%05d", 42)
String longa[[ multi\nline ]]

Tabelas (a estrutura de dados central)

As tabelas são o único tipo estruturado de Lua - funcionam como arrays, maps e objetos.

OperaçãoSintaxe
Tabela vazialocal t = {}
Estilo array (base 1)local t = {10, 20, 30}
Acessar elemento do arrayt[1] (primeiro elemento)
Tabela estilo maplocal u = {name = "Ada", age = 30}
Acessar valor do mapu.name ou u["name"]
Definir um valort[4] = 40, u.email = "a@x.com"
Comprimento da parte array#t
Iterar array (ipairs)for i, v in ipairs(t) do ... end
Iterar todas as chaves (pairs)for k, v in pairs(u) do ... end
Tabela aninhadalocal m = {a = {1, 2}}

Controle de fluxo

Os blocos fecham com end; apenas nil e false são falsy.

OperaçãoSintaxe
If / elseif / elseif x > 0 then ... elseif x < 0 then ... else ... end
Operadores lógicosand, or, not
For numéricofor i = 1, 10 do ... end
For com passofor i = 10, 1, -1 do ... end
Laço whilewhile x < 100 do ... end
Repeat-untilrepeat ... until done
Breakbreak
Operador de diferençaif a ~= b then ... end

Funções

Funções são valores de primeira classe e podem retornar múltiplos resultados.

OperaçãoSintaxe
Definir uma funçãofunction add(a, b) return a + b end
Função locallocal function square(x) return x * x end
Função anônimalocal f = function(x) return x * 2 end
Múltiplos valores de retornofunction bounds() return 1, 10 end
Capturar múltiplos retornoslocal lo, hi = bounds()
Função variádicafunction sum(...) ... end
Coletar varargslocal args = {...}
Método (sintaxe com dois-pontos)function obj:greet() ... end

Biblioteca de string

Funções comuns da biblioteca de string (chamáveis como s:fn()).

FunçãoO que faz
string.len(s)Comprimento da string
string.sub(s, i, j)Substring do índice i ao j
string.upper(s)Cópia em maiúsculas
string.rep(s, n)Repete a string n vezes
string.find(s, p)Encontra um padrão, retorna início/fim
string.match(s, p)Retorna a primeira correspondência do padrão
string.gsub(s, p, r)Substitui todas as correspondências do padrão
string.format(fmt, ...)Formata valores em uma string

Bibliotecas table e math

Auxiliares para trabalhar com tabelas estilo array e com números.

FunçãoO que faz
table.insert(t, v)Adiciona um valor ao final
table.insert(t, i, v)Insere v na posição i
table.remove(t, i)Remove e retorna o elemento em i
table.concat(t, ", ")Junta os elementos em uma string
table.sort(t)Ordena o array no lugar
math.floor(x) / math.ceil(x)Arredonda para baixo / para cima
math.max(...) / math.min(...)Maior / menor argumento
math.random(1, 6)Inteiro aleatório em um intervalo

Metatables (resumo)

As metatables permitem personalizar como as tabelas se comportam - operadores, indexação e mais.

OperaçãoSintaxe
Definir uma metatablesetmetatable(t, mt)
Obter uma metatablegetmetatable(t)
Fallback para chaves ausentesmt.__index = defaults
Padrão via funçãomt.__index = function(t, k) ... end
Personalizar adiçãomt.__add = function(a, b) ... end
Personalizar tostringmt.__tostring = function(t) ... end
OOP baseada em protótiposmt.__index = ClassTable

A sintaxe de Lua que você mais usa, em uma única página. Esta folha de consulta Lua é uma referência rápida para o núcleo da linguagem - variáveis e tipos, strings, controle de fluxo, funções e as tabelas que servem como a única e flexível estrutura de dados de Lua, além de um vislumbre das bibliotecas padrão e das metatables.

Tudo aqui é Lua padrão e roda em um interpretador comum. Copie o que precisar ou teste cada trecho ao vivo no playground de Lua - sem necessidade de instalação.

Perguntas frequentes sobre a folha de consulta Lua

Esta folha de consulta Lua é gratuita?
Sim. Esta folha de consulta Lua é totalmente gratuita, sem necessidade de cadastro. Salve nos favoritos e volte sempre que precisar consultar uma operação de tabela, uma função de string ou uma palavra-chave de controle de fluxo.
Como uma tabela Lua pode ser ao mesmo tempo um array e um map?
Uma tabela é apenas um conjunto de pares chave-valor, e a chave pode ser qualquer valor. Quando você usa chaves inteiras consecutivas começando em 1 ({10, 20, 30}), a tabela se comporta como um array; quando você usa chaves de string ({name = "Ada"}), ela se comporta como um map. Você pode até misturar os dois na mesma tabela. É por isso que Lua só precisa de um tipo estruturado - a tabela cobre arrays, dicionários, conjuntos e objetos.
Por que Lua usa indexação com base 1?
Por convenção e por design, os arrays em Lua começam no índice 1, não no 0 - então t[1] é o primeiro elemento e #t é a contagem. O operador de comprimento # e funções de biblioteca como table.insert e ipairs assumem essa convenção de base 1, então manter-se fiel a ela mantém seu código de array funcionando como esperado.
Posso praticar Lua online?
Sim. Abra o playground de Lua para executar qualquer trecho desta folha de consulta no seu navegador - sem instalação de Lua. Quando quiser estrutura, o curso interativo e gratuito de Lua da Coddy leva você passo a passo de variáveis e tabelas a funções e metatables.
Esta folha de consulta é boa para iniciantes?
Sim. Ela está organizada dos tópicos mais comuns (variáveis, strings, tabelas, controle de fluxo) até os avançados (as bibliotecas padrão e as metatables), de modo que você pode usar as seções de cima já no primeiro dia e ir avançando para o resto.
Coddy programming languages illustration

Aprenda Lua com a Coddy

COMEÇAR