Menu
Coddy logo textTech

Lua Spickzettel

Zuletzt aktualisiert

Hello World & Code ausführen

Lua ist minimal - eine einzige Anweisung läuft.

OperationSyntax
Eine Zeile ausgebenprint("Hello, World!")
Mehrere Werte ausgebenprint("x", 1, true)
Ohne Zeilenumbruch schreibenio.write("Hi")
Kommentar-- this is a comment
Mehrzeiliger Kommentar--[[ ... ]]
Strings verkettenprint("Hi " .. name)
Eine Datei ausführenlua app.lua
Interaktive Shelllua

Variablen & Typen

Variablen sind standardmäßig global; deklariere lokale mit local.

OperationSyntax
Lokale Variablelocal age = 30
Globale Variablecount = 0
Mehrfachzuweisunglocal a, b = 1, 2
Die acht Typennil, boolean, number, string, table, function, userdata, thread
Nil / Booleansnil, true, false
Typ prüfentype(x) gibt "number" zurück
In Zahl umwandelntonumber("42")
In String umwandelntostring(42)

Strings

Strings sind unveränderlich; sowohl einfache als auch doppelte Anführungszeichen funktionieren.

OperationSyntax
Länge#s oder string.len(s)
Verkettens1 .. s2
Groß-/Kleinschreibungs:upper(), s:lower()
Teilstrings:sub(1, 3)
Teilstring findens:find("ell")
Ersetzen (gsub)s:gsub("a", "b")
Formatierenstring.format("%05d", 42)
Langer String[[ multi\nline ]]

Tables (die zentrale Datenstruktur)

Tables sind Luas einziger strukturierter Typ - sie dienen als Arrays, Maps und Objekte.

OperationSyntax
Leere Tablelocal t = {}
Array-Stil (1-basiert)local t = {10, 20, 30}
Auf Array-Element zugreifent[1] (erstes Element)
Table im Map-Stillocal u = {name = "Ada", age = 30}
Auf Map-Wert zugreifenu.name oder u["name"]
Einen Wert setzent[4] = 40, u.email = "a@x.com"
Länge des Array-Teils#t
Array durchlaufen (ipairs)for i, v in ipairs(t) do ... end
Alle Schlüssel durchlaufen (pairs)for k, v in pairs(u) do ... end
Verschachtelte Tablelocal m = {a = {1, 2}}

Kontrollfluss

Blöcke schließen mit end; nur nil und false sind falsy.

OperationSyntax
If / elseif / elseif x > 0 then ... elseif x < 0 then ... else ... end
Logische Operatorenand, or, not
Numerisches forfor i = 1, 10 do ... end
For mit Schrittweitefor i = 10, 1, -1 do ... end
While-Schleifewhile x < 100 do ... end
Repeat-untilrepeat ... until done
Breakbreak
Ungleich-Operatorif a ~= b then ... end

Funktionen

Funktionen sind Werte erster Klasse und können mehrere Ergebnisse zurückgeben.

OperationSyntax
Eine Funktion definierenfunction add(a, b) return a + b end
Lokale Funktionlocal function square(x) return x * x end
Anonyme Funktionlocal f = function(x) return x * 2 end
Mehrere Rückgabewertefunction bounds() return 1, 10 end
Mehrere Rückgaben erfassenlocal lo, hi = bounds()
Variadische Funktionfunction sum(...) ... end
Varargs sammelnlocal args = {...}
Methode (Doppelpunkt-Syntax)function obj:greet() ... end

String-Bibliothek

Gängige Funktionen aus der String-Bibliothek (aufrufbar als s:fn()).

FunktionWas sie macht
string.len(s)Länge des Strings
string.sub(s, i, j)Teilstring von Index i bis j
string.upper(s)Kopie in Großbuchstaben
string.rep(s, n)Wiederholt den String n-mal
string.find(s, p)Findet ein Muster, gibt Anfang/Ende zurück
string.match(s, p)Gibt den ersten Mustertreffer zurück
string.gsub(s, p, r)Ersetzt alle Mustertreffer
string.format(fmt, ...)Formatiert Werte zu einem String

Table- & Math-Bibliotheken

Helfer für die Arbeit mit Tables im Array-Stil und mit Zahlen.

FunktionWas sie macht
table.insert(t, v)Hängt einen Wert am Ende an
table.insert(t, i, v)Fügt v an Position i ein
table.remove(t, i)Entfernt das Element an i und gibt es zurück
table.concat(t, ", ")Fügt Elemente zu einem String zusammen
table.sort(t)Sortiert das Array an Ort und Stelle
math.floor(x) / math.ceil(x)Ab- / aufrunden
math.max(...) / math.min(...)Größtes / kleinstes Argument
math.random(1, 6)Zufällige Ganzzahl in einem Bereich

Metatables (kurz)

Metatables erlauben dir, das Verhalten von Tables anzupassen - Operatoren, Indizierung und mehr.

OperationSyntax
Eine Metatable setzensetmetatable(t, mt)
Eine Metatable holengetmetatable(t)
Ausweich für fehlende Schlüsselmt.__index = defaults
Standard über eine Funktionmt.__index = function(t, k) ... end
Addition anpassenmt.__add = function(a, b) ... end
tostring anpassenmt.__tostring = function(t) ... end
Prototyp-basierte OOPmt.__index = ClassTable

Die Lua-Syntax, die du am häufigsten brauchst, auf einer Seite. Dieser Lua-Spickzettel ist eine Schnellreferenz für die Kernsprache - Variablen und Typen, Strings, Kontrollfluss, Funktionen sowie die Tables, die Luas einzige, flexible Datenstruktur bilden, plus ein Blick auf die Standardbibliotheken und Metatables.

Alles hier ist Standard-Lua und läuft auf einem unveränderten Interpreter. Kopiere, was du brauchst, oder probiere jeden Codeschnipsel live im Lua-Playground aus - keine Installation nötig.

Lua-Spickzettel FAQ

Ist dieser Lua-Spickzettel kostenlos?
Ja. Dieser Lua-Spickzettel ist völlig kostenlos, ohne erforderliche Anmeldung. Setze ein Lesezeichen und komm jederzeit wieder, wenn du eine Table-Operation, eine String-Funktion oder ein Kontrollfluss-Schlüsselwort nachschlagen möchtest.
Wie kann eine Lua-Table sowohl ein Array als auch eine Map sein?
Eine Table ist einfach eine Menge von Schlüssel-Wert-Paaren, und der Schlüssel kann jeder beliebige Wert sein. Wenn du fortlaufende Ganzzahl-Schlüssel ab 1 verwendest ({10, 20, 30}), verhält sich die Table wie ein Array; wenn du String-Schlüssel verwendest ({name = "Ada"}), verhält sie sich wie eine Map. Du kannst in derselben Table sogar beides mischen. Deshalb braucht Lua nur einen strukturierten Typ - die Table deckt Arrays, Dictionaries, Sets und Objekte ab.
Warum verwendet Lua 1-basierte Indizierung?
Per Konvention und Design beginnen Lua-Arrays bei Index 1, nicht 0 - daher ist t[1] das erste Element und #t die Anzahl. Der Längenoperator # und Bibliotheksfunktionen wie table.insert und ipairs setzen alle diese 1-basierte Konvention voraus, sodass das Festhalten daran deinen Array-Code wie erwartet funktionieren lässt.
Kann ich Lua online üben?
Ja. Öffne den Lua-Playground, um jeden Codeschnipsel aus diesem Spickzettel in deinem Browser auszuführen - keine Lua-Installation nötig. Wenn du Struktur möchtest, führt dich Coddys kostenloser interaktiver Lua-Kurs Schritt für Schritt von Variablen und Tables zu Funktionen und Metatables.
Ist dieser Spickzettel für Anfänger geeignet?
Ja. Er ist von den häufigsten Themen (Variablen, Strings, Tables, Kontrollfluss) hin zu den fortgeschrittenen (die Standardbibliotheken und Metatables) gegliedert, sodass du die oberen Abschnitte schon am ersten Tag nutzen und in den Rest hineinwachsen kannst.
Coddy programming languages illustration

Lerne Lua mit Coddy

LOS GEHT'S