So nutzen Sie den Online-Lua-Compiler
- Schreiben Sie ein Lua-Skript im Editor oder fügen Sie es dort ein. Beispiel zurücksetzen stellt den Startcode wieder her.
- Drücken Sie Ausführen oder nutzen Sie Strg + Enter (⌘ + Enter auf dem Mac).
- Alles, was Sie an
print()übergeben, erscheint im Bereich Ausgabe. Wie beim Standard-Interpreter werden mehrere Argumente durch Tabulatoren getrennt, undnilwird alsnilausgegeben. Laufzeit- und Syntaxfehler werden samt Zeilennummer hervorgehoben. - Wählen Sie ein Zeitlimit von 5, 15 oder 60 Sekunden. Ein Skript, das zu lange läuft, wird automatisch gestoppt, und Stopp beendet es sofort.
Die Lua-Laufzeitumgebung ist klein, deutlich unter 1 MB, sodass die Seite fast sofort startklar ist. Mit Kopieren oder main.lua speichern Sie Ihr Skript.
Ihr Skript läuft in einem Web Worker in Ihrem Browser. Es wird nie hochgeladen und nicht auf unseren Servern gespeichert. Der Editor merkt sich Ihren letzten Code im lokalen Speicher Ihres Browsers und an keiner anderen Stelle.
Was unterstützt wird
Der Compiler führt Lua 5.4 über wasmoon aus, einen WebAssembly-Build des in C geschriebenen Lua-Referenz-Interpreters. Ihr Code wird von echtem Lua ausgeführt, nicht von einer Übersetzung in JavaScript.
- Die Sprache Lua 5.4: Ganzzahl- und Gleitkomma-Untertypen, ganzzahlige Division (
//), bitweise Operatoren,gotosowie die lokalen Attribute<const>und<close>. - Standardbibliotheken:
string(einschließlich Lua-Mustern undstring.format),table,math,utf8undcoroutine. - Closures, Metatables und Coroutinen, sodass Sie objektorientiertes und generatorartiges Lua üben können.
Einschränkungen:
- Nutzen Sie
print()für die Ausgabe. Die Ausgabe wird vonprintaufgefangen; verwenden Sie es also stattio.write. - Keine Standardeingabe, kein Netzwerkzugriff und keine echten Dateien. Legen Sie Ihre Testdaten direkt im Skript ab.
- Keine C-Module oder LuaRocks. Es läuft nur reiner Lua-Code aus dem Editor.
- Jeder Lauf erhält einen frischen Lua-Zustand; globale Variablen des vorigen Laufs werden also gelöscht.
Lua-Kurzreferenz
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
| Aufgabe | Syntax |
|---|---|
| Lokale Variable | local x = 10 |
| Zeichenketten verketten | "a" .. "b" |
| Länge einer Zeichenkette oder Liste | #t |
| Ungleich | a ~= b |
| Numerische Schleife | for i = 1, 10, 2 do ... end |
| Eine Liste / eine Tabelle durchlaufen | for i, v in ipairs(t) / for k, v in pairs(t) |
| Eine Zahl formatieren | string.format("%.2f", n) |
Tipps
- Lua-Arrays beginnen bei Index 1, nicht bei 0, und
#ist nur für Sequenzen ohnenil-Lücken zuverlässig. - Deklarieren Sie Variablen mit
local. Ohne das Schlüsselwort ist eine Variable global, was langsamer ist und eine häufige Fehlerquelle darstellt. - Nur
nilundfalsegelten als falsch.0und die leere Zeichenkette sind in Lua wahr. - Lua-Muster sehen aus wie reguläre Ausdrücke, sind aber einfacher und nutzen
%statt eines Backslashs, wie in%d+. Für vollständige reguläre Ausdrücke in anderen Sprachen probieren Sie den Regex-Tester.
pairs oder nutzen Sie table.concat(list, ", ") für eine Liste aus Zeichenketten und Zahlen. Wenn Sie die Tabelle selbst an print(t) übergeben, wird ihr Inhalt nicht aufgelistet.Häufig gestellte Fragen
Welche Lua-Version wird hier verwendet?
Lua 5.4. Führen Sie print(_VERSION) aus, um das zu bestätigen. Für Lua 5.3 geschriebener Code läuft fast immer unverändert, während Code für Lua 5.1 oder LuaJIT kleine Anpassungen brauchen kann, zum Beispiel unpack durch table.unpack zu ersetzen.
Kann ich hier Roblox- oder LÖVE-Skripte testen?
Sie können reine Lua-Logik testen, etwa Funktionen, Tabellen, Zeichenkettenverarbeitung und Mathematik. Engine-APIs wie die Roblox-Dienste (Roblox nutzt seinen eigenen Dialekt Luau) oder die love.*-Funktionen von LÖVE gibt es hier nicht.
Warum funktioniert io.read nicht?
Der Compiler hat keine interaktive Standardeingabe. Definieren Sie Ihre Testwerte als Variablen am Anfang des Skripts.
Welche anderen Sprachen kann ich online ausführen?
Der Online-Python-Compiler und der Online-Ruby-Compiler laufen ebenfalls vollständig in Ihrem Browser.
Aktualisiert