Come usare il compilatore Lua online
- Scrivi o incolla uno script Lua nell'editor. Ripristina esempio ripristina il codice iniziale.
- Premi Esegui oppure usa Ctrl + Invio (⌘ + Invio su Mac).
- Tutto ciò che passi a
print()compare nel pannello Output. Come nell'interprete standard, più argomenti sono separati da tabulazioni enilviene stampato comenil. Gli errori di runtime e di sintassi vengono evidenziati insieme al numero di riga. - Scegli un limite di tempo di 5, 15 o 60 secondi. Uno script che gira troppo a lungo viene fermato automaticamente, e Interrompi lo termina subito.
Il runtime Lua è piccolo, ben sotto 1 MB, quindi la pagina è pronta a eseguire quasi all'istante. Usa Copia o main.lua per salvare il tuo script.
Il tuo script gira in un Web Worker dentro il tuo browser. Non viene mai caricato e non è salvato sui nostri server. L'editor ricorda il tuo ultimo codice nel local storage del tuo browser, e in nessun altro posto.
Cosa è supportato
Il compilatore esegue Lua 5.4 tramite wasmoon, una build WebAssembly dell'interprete Lua di riferimento scritto in C. Il tuo codice viene eseguito da Lua vero, non da una traduzione in JavaScript.
- Il linguaggio Lua 5.4: sottotipi intero e float, divisione intera (
//), operatori bit a bit,gotoe gli attributi locali<const>e<close>. - Librerie standard:
string(compresi i pattern Lua estring.format),table,math,utf8ecoroutine. - Closure, metatable e coroutine, così puoi esercitarti con Lua orientato agli oggetti e in stile generatore.
Limitazioni:
- Usa
print()per l'output. L'output viene catturato daprint, quindi usalo al posto diio.write. - Nessuno standard input, accesso alla rete o file reali. Metti i tuoi dati di prova direttamente nello script.
- Nessun modulo C né LuaRocks. Può girare solo codice Lua puro nell'editor.
- Ogni esecuzione ottiene uno stato Lua nuovo, quindi le variabili globali dell'esecuzione precedente vengono azzerate.
Guida rapida a Lua
local Account = {}
Account.__index = Account
function Account.new(owner, balance)
return setmetatable({ owner = owner, balance = balance or 0 }, Account)
end
function Account:deposit(v)
self.balance = self.balance + v
end
local acc = Account.new("Ada")
acc:deposit(50)
print(acc.owner, acc.balance) --> Ada 50
for word in ("one two three"):gmatch("%a+") do
print(#word, word:upper())
end
print(7 // 2, 7 / 2) --> 3 3.5
| Operazione | Sintassi |
|---|---|
| Variabile locale | local x = 10 |
| Concatenare stringhe | "a" .. "b" |
| Lunghezza di una stringa o di una lista | #t |
| Diverso da | a ~= b |
| Ciclo numerico | for i = 1, 10, 2 do ... end |
| Iterare una lista / una tabella | for i, v in ipairs(t) / for k, v in pairs(t) |
| Formattare un numero | string.format("%.2f", n) |
Consigli
- Gli array in Lua partono dall'indice 1, non da 0, e
#è affidabile solo per sequenze senza "buchi"nil. - Dichiara le variabili con
local. Senza, una variabile è globale, il che è più lento e una fonte comune di bug. - Solo
nilefalsesono falsi.0e la stringa vuota sono veri in Lua. - I pattern Lua somigliano alle espressioni regolari ma sono più semplici e usano
%al posto della barra rovesciata, come in%d+. Per le espressioni regolari complete in altri linguaggi, prova il Tester Regex.
pairs, oppure usa table.concat(list, ", ") per una lista di stringhe e numeri. Passare la tabella stessa a print(t) non ne elenca il contenuto.Domande frequenti
Quale versione di Lua usa?
Lua 5.4. Esegui print(_VERSION) per confermarlo. Il codice scritto per Lua 5.3 funziona quasi sempre senza modifiche, mentre il codice per Lua 5.1 o LuaJIT può richiedere piccole modifiche, per esempio sostituire unpack con table.unpack.
Posso testare qui script per Roblox o LÖVE?
Puoi testare la logica Lua pura, come funzioni, tabelle, gestione delle stringhe e matematica. Le API dei motori, come i servizi di Roblox (Roblox usa un proprio dialetto, Luau) o le funzioni love.* di LÖVE, qui non esistono.
Perché io.read non funziona?
Il compilatore non ha uno standard input interattivo. Definisci i tuoi valori di prova come variabili all'inizio dello script.
Quali altri linguaggi posso eseguire online?
Anche il Compilatore Python online e il Compilatore Ruby online girano interamente nel tuo browser.
Aggiornato