Tabellen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Der Tabellen-Datentyp kann mehrere Werte eines beliebigen Typs speichern, der nicht nil ist, einschließlich Booleans, Zahlen, Strings, Funktionen und anderer Tabellen. Konstruiere Tabellen mit geschweiften Klammern ({}):


-- Konstruiere eine leere Tabelle, die der Variablen "t" zugewiesen wird
local t = {}
print(t) -- {}

Du kannst eine Tabelle als Array oder Wörterbuch verwenden. Arrays verwenden eine geordnete Liste von Zahlen als Indizes, während Wörterbücher Zahlen, Strings und Objekte als Indizes haben können.

Für weitere Informationen zu integrierten Funktionen zur Arbeit mit Tabellen siehe die table-Bibliothek.

Arrays

Ein Array ist eine geordnete Liste von Werten. Arrays sind nützlich zum Speichern von Datensammlungen, wie z. B. einer Gruppe von Spielern mit besonderen Berechtigungen.

Arrays erstellen

Um ein Array zu erstellen, das eine Luau-Tabelle verwendet, deklariere die Werte in aufeinanderfolgender Reihenfolge, durch Kommas getrennt.


-- Konstruiere ein Array mit drei Elementen
local testArray = {"Ein String", 3.14159, true}
print(testArray)

Aus Arrays lesen

Um aus einem Array zu lesen, füge ein Paar eckiger Klammern nach seiner Referenz hinzu und gib die Indexnummer des Elements innerhalb an ([pos]):


-- Konstruiere ein Array mit drei Elementen
local testArray = {"Ein String", 3.14159, true}
print(testArray[1]) -- Ein String
print(testArray[2]) -- 3.14159
print(testArray[3]) -- true

In Arrays schreiben

Um den Wert eines Arrays an einem Index zu definieren oder zu überschreiben, deklariere die Indexnummer in eckigen Klammern ([index]), gefolgt von = und dem Wert:


local testArray = {"Ein String", 3.14159, true}
testArray[2] = 12345
testArray[4] = "Neuer String"
print(testArray[2]) -- 12345
print(testArray[4]) -- Neuer String

Über Arrays iterieren

Um über ein Array zu iterieren, kannst du eine for-Schleife verwenden. Da die Arrays numerische Indizes haben, kannst du auch eine numerische for-Schleife von 1 bis zur Länge des Arrays (#array) verwenden.


local testArray = {"Ein String", 3.14159, true, "Neuer String"}
-- Schleife mit allgemeiner Iteration
for index, value in testArray do
print(index, value)
end
-- Iteriere unter Verwendung des Array-Längenoperators (#)
for index = 1, #testArray do
print(index, testArray[index])
end

Elemente einfügen

Es gibt zwei integrierte Möglichkeiten, ein Element am Ende eines Arrays einzufügen:

  • Übergebe eine Referenz auf das Array und den Elementwert an die Luau-Funktion table.insert().
  • Füge das neue Element zum Array unter Verwendung der Syntax array[#array+1] hinzu.

local testArray = {"Ein String", 3.14159}
table.insert(testArray, "Neuer String")
testArray[#testArray+1] = "Ein weiterer neuer String"
print(testArray[3]) -- Neuer String
print(testArray[4]) -- Ein weiterer neuer String

Um ein Element zwischen dem Anfang und Ende eines Arrays einzufügen, füge einen Positionswert als zweiten Parameter von table.insert() hinzu. Dadurch wird das neue Element eingefügt und die nachfolgenden Elemente um eine Indexposition verschoben.


local testArray = {"Erstes Element", "Nächstes Element"}
table.insert(testArray, 2, "NEUES ELEMENT #2")
print(testArray[1]) -- Erstes Element
print(testArray[2]) -- NEUES ELEMENT #2
print(testArray[3]) -- Nächstes Element

Elemente entfernen

Um ein Element aus einem Array zu entfernen, verwende table.remove(). Dadurch wird das Element an der angegebenen Position entfernt und alle folgenden Elemente werden um eine Indexposition nach hinten verschoben.


local testArray = {"Erstes Element", "Nächstes Element", "Letztes Element"}
table.remove(testArray, 2)
print(testArray[1]) -- Erstes Element
print(testArray[2]) -- Letztes Element

Wörterbücher

Wörterbücher sind eine Erweiterung von Arrays. Wörterbücher speichern eine Menge von Schlüssel-Wert-Paaren, wobei die Schlüssel jede Zahl, jeden String oder jedes Objekt sein können.

Wörterbücher erstellen

Um eine Wörterbuch-Tabelle zu erstellen, definiere jeden Schlüssel gefolgt von = und dem Wert. Trenne jedes Schlüssel-Wert-Paar mit einem Komma:


local testDictionary = {
obstName = "Zitrone",
obstFarbe = "Gelb",
sauer = true
}

Die Schlüssel für Wörterbücher können Zahlen, Strings und Objekte sein. Zum Beispiel kann ein Schlüssel auch eine Instance sein. Um Objekte als Schlüssel zu verwenden, deklariere den Schlüssel in eckigen Klammern ([key]):


local part = Instance.new("Part")
local testDictionary = {
partTyp = "Block",
[part] = true
}

Aus Wörterbüchern lesen

Um aus einem Wörterbuch zu lesen, füge ein Paar Klammern nach seiner Referenz hinzu und gib den Schlüsselnamen an. Greife direkt auf einen String-Schlüssel zu, indem du entweder (["key"]) oder (.key) verwendest oder stattdessen einen Variablenwert ([key]) verwendest.


local part = Instance.new("Part")
local testDictionary = {
partTyp = "Block",
[part] = true
}
-- Füge Anführungszeichen für String-Schlüssel hinzu
print(testDictionary["partTyp"]) -- Block
-- Oder verwende . um String-Schlüssel ohne Leerzeichen zu indizieren
print(testDictionary.partTyp) -- Block
-- Lass Anführungszeichen für nicht-String-Schlüssel weg
print(testDictionary[part]) -- true

In Wörterbüchern schreiben

Um den Wert eines neuen oder bestehenden Wörterbuchschlüssels zu definieren oder zu überschreiben, deklariere den Schlüsselnamen in Klammern ([key]) oder, wenn der Schlüssel ein String ist, verwende (.key) gefolgt von = und dem Wert:


local testDictionary = {
obstName = "Zitrone",
sauer = true
}
-- Ändere den Wert bestehender Schlüssel
testDictionary["obstName"] = "Kirsche"
testDictionary.sauer = false
-- Füge ein neues Schlüssel-Wert-Paar hinzu
testDictionary.obstAnzahl = 10
print(testDictionary.obstName) -- Kirsche
print(testDictionary.sauer) -- false
print(testDictionary.obstAnzahl) -- 10

Über Wörterbücher iterieren

Um über ein Wörterbuch zu iterieren, verwende eine for-Schleife:


local testDictionary = {
obstName = "Zitrone",
obstFarbe = "Gelb",
sauer = true
}
for key, value in testDictionary do
print(key, value)
end
--[[ Ergebnis:
obstName Zitrone
sauer true
obstFarbe Gelb
]]

Schlüssel-Wert-Paare entfernen

Um ein Schlüssel-Wert-Paar aus einem Wörterbuch zu entfernen oder zu löschen, setze seinen Wert für einen Schlüssel auf nil.


local testDictionary = {
obstName = "Zitrone",
obstFarbe = "Gelb",
sauer = true
}
testDictionary.sauer = nil
for key, value in testDictionary do
print(key, value)
end
--[[ Ergebnis:
obstName Zitrone
obstFarbe Gelb
]]

Tabellen als Referenzen

Wenn du eine Tabelle in einer neuen Variablen speicherst, erstellt Luau keine Kopie dieser Tabelle. Stattdessen wird die Variable zu einem Verweis oder Pointer auf die Originaltabelle. Jeder Verweis auf eine Tabelle spiegelt alle Änderungen an der Originaltabelle wider:


local originalArray = {10, 20}
local arrayReference = originalArray
print("Original:", originalArray[1], originalArray[2])
print("Verweis:", arrayReference[1], arrayReference[2])
-- Werte im Original-Array ändern
originalArray[1] = 1000
originalArray[2] = 2000
print("Verweis:", arrayReference[1], arrayReference[2])
--[[ Ergebnis:
Original: 10 20
Verweis: 10 20
Verweis: 1000 2000
]]

Tabellen klonen

Flache Klone

Um eine Tabelle ohne geschachtelte Tabellen zu kopieren, bietet Luau die Methode table.clone() an.


local original = {
schlüssel = "wert",
maschine = "Roblox",
spielerID = 505306092
}
local clone = table.clone(original)

Tiefe Klone

Um eine komplexere Tabelle mit darin geschachtelten Tabellen zu kopieren, musst du eine rekursive Funktion verwenden, die ähnlich ist wie die folgende:


-- Die Funktion, die zum tiefen Klonen einer Tabelle verwendet wird
local function deepClone(original)
-- Definiere die neue Tabelle für die Kopie
local clone = table.clone(original)
-- Durchlaufe die Originaltabelle, um nach Tabellenwerten zu suchen
-- Wenn eine Tabelle als Wert gefunden wird, klone sie tief zum Schlüssel (Index)
for key, value in original do
if type(value) == "table" then
clone[key] = deepClone(value)
end
end
-- Gib die endgültige Kopie der tief geklonten Tabelle zurück
return clone
end

Mit der Funktion kannst du dann einen tiefen Klon wie folgt erstellen:


local original = {
schlüssel = "wert",
spielerInfo = {
spielerID = 505306092,
spielerName = "SpielerName"
},
weitereInfo = {
{
{1, 3, 5, 7, 9}
}
}
}
local clone = deepClone(original)

Tabellen einfrieren

Das Einfrieren einer Tabelle macht sie schreibgeschützt, was nützlich ist, um konstante Werte zu erstellen, die du nicht ändern möchtest. Das Einfrieren ist dauerhaft; es gibt keine "auftauen"- oder "entsperren"-Methode. Um zu überprüfen, ob eine Tabelle eingefroren ist, verwende table.isfrozen().

Flache Einfrierungen

Um eine Tabelle ohne geschachtelte Tabellen einzufrieren, bietet Luau die Methode table.freeze() an.


local target = {
schlüssel = "wert",
maschine = "Roblox",
spielerID = 505306092
}
table.freeze(target)
target.spielerID = 1 --> Versuch, eine schreibgeschützte Tabelle zu ändern

Tiefe Einfrierungen

Um eine komplexere Tabelle mit darin geschachtelten Tabellen einzufrieren, verwende eine rekursive Funktion ähnlich der folgenden:


local function deepFreeze(target)
-- Flach einfrieren der Tabelle
table.freeze(target)
-- Überprüfe jeden Schlüssel der Tabelle und friere ihn ein, wenn es eine Tabelle ist
for _, value in target do
-- Stelle sicher, dass der Wert nicht eingefroren ist; wenn er bereits eingefroren ist, tritt ein Fehler auf
if type(value) == "table" and table.isfrozen(value) == false then
deepFreeze(value)
end
end
end

Mit der Funktion kannst du eine Tabelle dann tief einfrieren wie folgt:


local target = {
schlüssel = "wert",
spielerInfo = {
spielerID = 505306092,
spielerName = "SpielerName"
},
weitereInfo = {
{
{1, 3, 5, 7, 9}
}
}
}
deepFreeze(target)
target.spielerInfo.spielerID = 1 --> Versuch, eine schreibgeschützte Tabelle zu ändern
©2026 Roblox Corporation. Roblox, das Roblox-Logo und "Powering Imagination" gehören zu unseren eingetragenen und nicht eingetragenen Markenzeichen in den USA und anderen Ländern.