Menu
Coddy logo textTech

Lua Cheat Sheet

Ultimo aggiornamento

Hello World ed esecuzione del codice

Lua è minimale: basta una singola istruzione per eseguire qualcosa.

OperazioneSintassi
Stampare una rigaprint("Hello, World!")
Stampare più valoriprint("x", 1, true)
Scrivere senza andare a capoio.write("Hi")
Commento-- this is a comment
Commento su più righe--[[ ... ]]
Concatenare stringheprint("Hi " .. name)
Eseguire un filelua app.lua
Shell interattivalua

Variabili e tipi

Le variabili sono globali per impostazione predefinita; dichiara quelle locali con local.

OperazioneSintassi
Variabile localelocal age = 30
Variabile globalecount = 0
Assegnazione multiplalocal a, b = 1, 2
Gli otto tipinil, boolean, number, string, table, function, userdata, thread
Nil / booleaninil, true, false
Controllare il tipotype(x) restituisce "number"
Convertire in numerotonumber("42")
Convertire in stringatostring(42)

Stringhe

Le stringhe sono immutabili; funzionano sia gli apici singoli sia i doppi.

OperazioneSintassi
Lunghezza#s oppure string.len(s)
Concatenares1 .. s2
Maiuscolo / minuscolos:upper(), s:lower()
Sottostringas:sub(1, 3)
Trovare una sottostringas:find("ell")
Sostituire (gsub)s:gsub("a", "b")
Formattarestring.format("%05d", 42)
Stringa lunga[[ multi\nline ]]

Tabelle (la struttura dati principale)

Le tabelle sono l'unico tipo strutturato di Lua: fanno da array, map e oggetti.

OperazioneSintassi
Tabella vuotalocal t = {}
In stile array (indici da 1)local t = {10, 20, 30}
Accedere a un elemento dell'arrayt[1] (primo elemento)
Tabella in stile maplocal u = {name = "Ada", age = 30}
Accedere a un valore della mapu.name oppure u["name"]
Impostare un valoret[4] = 40, u.email = "a@x.com"
Lunghezza della parte array#t
Iterare l'array (ipairs)for i, v in ipairs(t) do ... end
Iterare tutte le chiavi (pairs)for k, v in pairs(u) do ... end
Tabella annidatalocal m = {a = {1, 2}}

Controllo del flusso

I blocchi si chiudono con end; solo nil e false sono falsi.

OperazioneSintassi
If / elseif / elseif x > 0 then ... elseif x < 0 then ... else ... end
Operatori logiciand, or, not
For numericofor i = 1, 10 do ... end
For con passofor i = 10, 1, -1 do ... end
Ciclo whilewhile x < 100 do ... end
Repeat-untilrepeat ... until done
Breakbreak
Operatore di disuguaglianzaif a ~= b then ... end

Funzioni

Le funzioni sono valori di prima classe e possono restituire più risultati.

OperazioneSintassi
Definire una funzionefunction add(a, b) return a + b end
Funzione localelocal function square(x) return x * x end
Funzione anonimalocal f = function(x) return x * 2 end
Più valori di ritornofunction bounds() return 1, 10 end
Raccogliere più valori restituitilocal lo, hi = bounds()
Funzione variadicafunction sum(...) ... end
Raccogliere i vararglocal args = {...}
Metodo (sintassi con i due punti)function obj:greet() ... end

Libreria string

Le funzioni più comuni della libreria string (richiamabili come s:fn()).

FunzioneCosa fa
string.len(s)Lunghezza della stringa
string.sub(s, i, j)Sottostringa dall'indice i a j
string.upper(s)Copia in maiuscolo
string.rep(s, n)Ripete la stringa n volte
string.find(s, p)Trova un pattern, restituisce inizio/fine
string.match(s, p)Restituisce la prima corrispondenza del pattern
string.gsub(s, p, r)Sostituisce tutte le corrispondenze del pattern
string.format(fmt, ...)Formatta valori in una stringa

Librerie table e math

Helper per lavorare con tabelle in stile array e con i numeri.

FunzioneCosa fa
table.insert(t, v)Aggiunge un valore in fondo
table.insert(t, i, v)Inserisce v alla posizione i
table.remove(t, i)Rimuove e restituisce l'elemento in i
table.concat(t, ", ")Unisce gli elementi in una stringa
table.sort(t)Ordina l'array sul posto
math.floor(x) / math.ceil(x)Arrotonda per difetto / per eccesso
math.max(...) / math.min(...)L'argomento più grande / più piccolo
math.random(1, 6)Intero casuale in un intervallo

Metatabelle (in breve)

Le metatabelle ti permettono di personalizzare il comportamento delle tabelle: operatori, indicizzazione e altro.

OperazioneSintassi
Impostare una metatabellasetmetatable(t, mt)
Ottenere una metatabellagetmetatable(t)
Valore di riserva per le chiavi mancantimt.__index = defaults
Valore predefinito tramite funzionemt.__index = function(t, k) ... end
Personalizzare l'addizionemt.__add = function(a, b) ... end
Personalizzare tostringmt.__tostring = function(t) ... end
OOP basata su prototipimt.__index = ClassTable

La sintassi di Lua che usi di più, in una sola pagina. Questa cheat sheet di Lua è un riferimento rapido per il linguaggio di base: variabili e tipi, stringhe, controllo del flusso, funzioni e le tabelle, l'unica e flessibile struttura dati di Lua, più uno sguardo alle librerie standard e alle metatabelle.

Tutto quello che trovi qui è Lua standard e gira su un interprete normale. Copia quello che ti serve oppure prova ogni frammento dal vivo nel playground Lua, senza installare nulla.

Domande frequenti sulla cheat sheet di Lua

Questa cheat sheet di Lua è gratuita?
Sì. Questa cheat sheet di Lua è completamente gratuita e non richiede registrazione. Salvala nei preferiti e torna quando devi controllare un'operazione sulle tabelle, una funzione delle stringhe o una parola chiave del controllo del flusso.
Come fa una tabella Lua a essere sia un array sia una map?
Una tabella è solo un insieme di coppie chiave-valore, e la chiave può essere qualsiasi valore. Quando usi chiavi intere consecutive a partire da 1 ({10, 20, 30}) la tabella si comporta come un array; quando usi chiavi stringa ({name = "Ada"}) si comporta come una map. Puoi anche mescolarle nella stessa tabella. Ecco perché a Lua basta un solo tipo strutturato: la tabella copre array, dizionari, set e oggetti.
Perché in Lua gli indici partono da 1?
Per convenzione e per scelta di design, gli array di Lua partono dall'indice 1 e non da 0: quindi t[1] è il primo elemento e #t è il numero di elementi. L'operatore di lunghezza # e funzioni di libreria come table.insert e ipairs presuppongono tutti questa convenzione, quindi rispettarla fa funzionare il tuo codice sugli array come ti aspetti.
Posso esercitarmi con Lua online?
Sì. Apri il playground Lua per eseguire nel browser qualsiasi frammento di questa cheat sheet, senza installare Lua. Quando vuoi un percorso strutturato, il corso interattivo gratuito di Lua di Coddy ti porta passo dopo passo da variabili e tabelle fino a funzioni e metatabelle.
Questa cheat sheet va bene per chi inizia?
Sì. È organizzata dagli argomenti più comuni (variabili, stringhe, tabelle, controllo del flusso) fino a quelli avanzati (librerie standard e metatabelle), così puoi usare le prime sezioni fin dal primo giorno e arrivare al resto con il tempo.
Illustrazione dei linguaggi di programmazione di Coddy

Impara Lua con Coddy

INIZIA