Überblick über Lua-Datentypen
Untersuchen Sie die Typen nil, boolean, number, string, table, function und userdata.
Überblick über Lua-Datentypen ist eine kostenlose Lua Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Lua Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Willkommen bei Lua
Lua ist eine leichtgewichtige, schnelle und einbettbare Skriptsprache, die in Spiele-Engines, Webservern und eingebetteten Systemen verwendet wird. Bevor Sie echte Programme schreiben, müssen Sie verstehen, wie Lua Daten darstellt.
Lua verfügt über 8 grundlegende Typen: nil, boolean, number, string, table, function, userdata und thread. Jeder Wert in Lua gehört genau einem dieser Typen an.
-- Check the type of any value with type()
print(type(42)) -- number
print(type("hello")) -- string
print(type(true)) -- boolean
print(type(nil)) -- nilnil: Das Fehlen eines Werts
nil ist Luas Darstellung für nichts oder keinen Wert. Es ist der einzige Wert seines Typs. Variablen, denen noch kein Wert zugewiesen wurde, enthalten automatisch nil.
Wenn Sie einer globalen Variable nil zuweisen, wird sie effektiv gelöscht. In Tabellen entfernt das Setzen eines Schlüssels auf nil den entsprechenden Eintrag vollständig.
-- Unassigned variables are nil
print(x) -- nil
x = 10
print(x) -- 10
x = nil
print(x) -- nil (variable is gone)boolean: true und false
Der Typ boolean hat genau zwei Werte: true und false. Luas Regeln für Wahrheitswerte sind einfach, aber wichtig: Nur nil und false gelten als falsch. Alles andere — einschließlich der Zahl 0 und der leeren Zeichenkette "" — gilt als wahr.
Das unterscheidet Lua von vielen anderen Sprachen, in denen 0 oder "" als falsch gelten.
-- Lua truthiness examples
if 0 then print("0 is truthy!") end -- prints!
if "" then print("empty str is truthy!") end -- prints!
if nil then print("nil") else print("nil is falsy") end
if false then print("false") else print("false is falsy") endnumber: Ganzzahlen und Gleitkommazahlen
Lua 5.3+ hat zwei Untertypen von number: integer und float. Ganzzahlen sind exakte 64-Bit-Werte; Gleitkommazahlen verwenden doppelte Genauigkeit nach IEEE 754. In Lua 5.1/5.2 sind alle Zahlen Double-Werte.
Die Funktion math.type() unterscheidet zwischen den beiden Untertypen. Die Division mit / liefert immer eine Gleitkommazahl; // (Ganzzahldivision mit Abrundung) liefert eine Ganzzahl, wenn beide Operanden Ganzzahlen sind.
print(type(10)) -- number
print(type(10.5)) -- number
print(math.type(10)) -- integer
print(math.type(10.5))-- float
print(10 / 3) -- 3.3333...
print(10 // 3) -- 3 (floor division)string: Text in Lua
Zeichenketten sind in Lua unveränderliche Bytefolgen. Sie können sie mit einfachen oder doppelten Anführungszeichen oder mit langen Klammern [[...]] für mehrzeilige Zeichenketten begrenzen. Zeichenketten in langen Klammern ignorieren den ersten Zeilenumbruch und bewahren alles Weitere unverändert.
Lua-Zeichenketten werden interniert, sodass identische Zeichenketten denselben Speicher nutzen. Der Längenoperator # gibt die Anzahl der Bytes zurück.
local s1 = 'single quotes'
local s2 = "double quotes"
local s3 = [[multi-line
long string]]
print(#s1) -- 13
print(type(s1)) -- string
print(s1 .. " works") -- concatenation with ..table: Der universelle Container
Der Typ table ist Luas einzige zusammengesetzte Datenstruktur, aber dennoch leistungsfähig genug, um Arrays, Dictionaries, Objekte, Mengen und vieles mehr zu implementieren. Tabellen sind assoziative Arrays: Sie ordnen Schlüsseln Werte zu, wobei Schlüssel beliebige Werte außer nil und NaN sein können.
Tabellen werden mit geschweiften Klammern {} erstellt. Tabellen im Array-Stil verwenden ganzzahlige Schlüssel beginnend bei 1.
-- Array style
local fruits = {"apple", "banana", "cherry"}
print(fruits[1]) -- apple (1-indexed!)
-- Dictionary style
local person = {name = "Alice", age = 30}
print(person.name) -- Alice
print(person["age"]) -- 30function: Werte erster Klasse
Funktionen sind in Lua Werte erster Klasse vom Typ function. Sie können in Variablen gespeichert, als Argumente übergeben und von anderen Funktionen zurückgegeben werden. Dadurch eignet sich Lua von Natur aus für Muster der funktionalen Programmierung.
Sie können Funktionen mit dem Schlüsselwort function definieren oder anonyme Funktionen Variablen zuweisen. Beide Formen sind gleichwertig.
-- Two equivalent ways to define a function
function greet(name)
return "Hello, " .. name
end
local greet2 = function(name)
return "Hello, " .. name
end
print(type(greet)) -- function
print(greet("Lua")) -- Hello, Luauserdata und thread
userdata steht für beliebige C-Daten, die von der Host-Anwendung verwaltet werden. Sie können userdata nicht in reinem Lua erstellen — es stammt aus C-Erweiterungen oder Einbettungsumgebungen wie Spiele-Engines. Dadurch kann C-Code Objekte für Lua-Skripte bereitstellen.
thread steht für Coroutinen — unabhängige Ausführungsstränge mit eigenen Stacks. Coroutinen behandeln wir in einer eigenen Lektion. Merken Sie sich zunächst, dass coroutine.create() einen Wert vom Typ thread zurückgibt.
-- thread type via coroutine
local co = coroutine.create(function()
print("coroutine body")
end)
print(type(co)) -- thread
-- userdata comes from C, not creatable in pure Lua
-- type(io.stdin) == "file" is a userdata variantWerte mit type() untersuchen
Die eingebaute Funktion type() gibt immer eine Zeichenkette zurück, die den Typ ihres Arguments bezeichnet. Das ist für defensive Programmierung und beim Debuggen nützlich. Sie können das Ergebnis direkt mit den Zeichenketten vergleichen, die Typnamen enthalten.
Beachten Sie, dass type(nil) die Zeichenkette "nil" zurückgibt, nicht den Wert nil selbst. So können Sie sicher prüfen, ob eine Variable nil enthält, ohne Fehler zu verursachen.
local values = {42, "hi", true, nil, {}, function() end}
-- Note: nil in table stops ipairs early
for i = 1, 3 do
print(i, type(values[i]))
end
-- 1 number
-- 2 string
-- 3 booleanTypunterschiede zu anderen Sprachen
Wenn Sie aus JavaScript, Python oder Java kommen, können Sie einige Regeln für Lua-Typen überraschen. Es gibt keinen separaten Ganzzahltyp, den type() sichtbar macht — sowohl Ganzzahlen als auch Gleitkommazahlen liefern "number". Arrays haben keinen eigenen Typ — sie sind einfach Tabellen. Klassen gibt es nicht — Objekte sind Tabellen mit Metatables.
Wenn Sie diese Unterschiede verstehen, vermeiden Sie häufige Fehler beim Wechsel zwischen Programmiersprachen.
-- No separate array type
local arr = {1, 2, 3}
print(type(arr)) -- table (not array!)
-- No separate integer type visible
print(type(1)) -- number
print(type(1.0)) -- number
-- math.type distinguishes
print(math.type(1)) -- integer
print(math.type(1.0)) -- floatSchnelltest
Was gibt type(0) in Lua zurück?
Zusammenfassung: Überblick über die Lua-Datentypen
Sie haben alle 8 Lua-Typen kennengelernt:
- nil — Fehlen eines Werts; gilt als falsch
- boolean — true/false; nur nil und false gelten als falsch
- number — Ganzzahl oder Gleitkommazahl; verwenden Sie math.type(), um sie zu unterscheiden
- string — unveränderliche Bytefolgen; verwenden Sie .. zum Verketten
- table — der universelle Container für Arrays und Dictionaries
- function — Werte erster Klasse, die in Variablen gespeichert werden können
- userdata — C-Daten, die Lua bereitgestellt werden
- thread — Coroutine-Handles
Als Nächstes: Variablen deklarieren — globaler und lokaler Gültigkeitsbereich.
Lerne Lua mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 40
- Lektionen
- 159
Häufig gestellte Fragen
Ist die Lektion „Überblick über Lua-Datentypen“ kostenlos?
Ja — der vollständige Text von „Überblick über Lua-Datentypen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Lua Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Überblick über Lua-Datentypen“?
Untersuchen Sie die Typen nil, boolean, number, string, table, function und userdata. Du übst Lua Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Lua Academy zu starten?
Keine Vorkenntnisse erforderlich. Lua Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Überblick über Lua-Datentypen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Lua Academy-Lektion Code schreiben und ausführen?
Ja. Jede Lua Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Überblick über Lua-Datentypen
- Variablen in Lua deklarieren
- Arithmetische und relationale Operatoren
- Typkoerzierung und Typkonvertierung