Der Tabelle Daten тип kann mehrere Werte jeglicher Art speichern, die nicht nil ist, einschließlich Booleans , Zahlen , Zeichen , Funktionen und anderer Tabellen.Konstruiere Tabellen mit gekrümmten Klammern ( {} ):
-- Baue einen leeren Tisch auf, der der Variable "t" zugewiesen istlocal t = {}print(t) -- {}
Du kannst eine Tabelle als Array oder Diktionär verwenden.Arrays verwenden eine geordnete Liste von Zahlen als Indizes, aber Wörterbücher können Zahlen, Zeichen und Objekte als Indizes haben.
Für weitere Informationen über integrierte Funktionen für die Arbeit mit Tabellen siehe die table Bibliothek.
Arrays
Ein Array ist eine geordnete Liste von Werten.Arrays sind nützlich zum Speichern von Sammlungen von Daten, wie einer Gruppe von Spielern mit besonderen Berechtigungen.
Arrays erstellen
Um ein Array mit einem Luau-Tab zu erstellen, deklariere die Werte in sequentieller Reihenfolge, getrennt durch Kommas.
-- Baue ein Array mit drei Elementen auflocal testArray = {"A string", 3.14159, true}print(testArray)
Aus Arrays lesen
Um aus einem Array zu lesen, füge ein Paar quadratischer Klammern nach seiner Referenz hinzu und gib die Indexnummer des Elements innerhalb an ( [pos] ):
-- Baue ein Array mit drei Elementen auflocal testArray = {"A string", 3.14159, true}print(testArray[1]) -- Eine Stringprint(testArray[2]) -- 3.14159print(testArray[3]) -- true
Schreiben in Arrays
Um den Wert eines Arrays bei einem Index zu definieren oder neu zu schreiben, erkläre die Indexnummer in quadratischen Klammern ( [index] ) gefolgt von = und dem Wert:
local testArray = {"A string", 3.14159, true}testArray[2] = 12345testArray[4] = "New string"print(testArray[2]) --12345print(testArray[4]) -- New 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 verwenden (#array).
local testArray = {"A string", 3.14159, true, "New string"}-- Schleife mit allgemeiner Iteration verwendenfor index, value in testArray doprint(index, value)end-- Iterieren mit dem Array-Länge-Operator (#)for index = 1, #testArray doprint(index, testArray[index])end
Artikel einfügen
Es gibt zwei integrierte Möglichkeiten, ein Element in das Ende eines Arrays einzufügen:
- Geben Sie eine Referenz auf das Array und den Artikelwert an die Luau-Funktion table.insert() weiter.
- Füge das neue Element zum Array mit der array[#array+1]-Syntax hinzu.
local testArray = {"A string", 3.14159}table.insert(testArray, "New string")testArray[#testArray+1] = "Another new string"print(testArray[3]) -- Neue Stringprint(testArray[4]) -- Another new string
Um ein Element zwischen dem Anfang und dem Ende eines Arrays einzufügen, füge einen Positionswert als zweites Argument von table.insert() hinzu.Dies fügt den neuen Artikel ein und schiebt die folgenden Artikel um eine Indexposition nach oben.
local testArray = {"First item", "Next item"}table.insert(testArray, 2, "NEW ITEM #2")print(testArray[1]) -- Erster Artikelprint(testArray[2]) -- NEUES ARTIKEL #2print(testArray[3]) -- Next item
Artikel entfernen
Um ein Element aus einem Array zu entfernen, verwende table.remove().Dies entfernt den Artikel an der angegebenen Position und bewegt alle nachfolgenden Elemente um eine Indexposition zurück.
local testArray = {"First item", "Next item", "Last item"}table.remove(testArray, 2)print(testArray[1]) -- Erster Artikelprint(testArray[2]) -- Last item
Wörterräume
Wörterbücher sind eine Erweiterung von Arrays. Wörterbücher speichern eine Reihe von Schlüssel-Wert-Paaren, bei denen die Schlüssel eine beliebige Zahl, Stringoder Objekt sein können.
Wörterbücher erstellen
Um einen Wörterbuch-Tabelle zu erstellen, definieren Sie jeden Schlüssel gefolgt von = und dem Wert . Trennen Sie jedes Schlüssel-Wert-Paar mit einem Komma:
local testDictionary = {fruitName = "Lemon",fruitColor = "Yellow",sour = true}
Die Schlüssel für Wörterbücher können Zahlen, Zeichenketten und Objekte sein.Zum Beispiel kann ein Schlüssel auch ein Instance sein.Um Objekte als Schlüssel zu verwenden, erkläre den Schlüssel in quadratischen Klammern ( [key] ):
local part = Instance.new("Part")local testDictionary = {partType = "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.Verweise direkt auf einen Zeichenstring mit Zitaten ( ["key"] ) oder verwende einen Variablenwert ( [key] ).
local part = Instance.new("Part")local testDictionary = {partType = "Block",[part] = true}-- Beinhalte Zitate für Zeichenschlüsselprint(testDictionary["partType"]) -- Blockieren-- Zitate für nicht-string-Schlüssel überspringenprint(testDictionary[part]) -- true
In Wörterbücher schreiben
Um den Wert eines neuen oder bestehenden Wörterbuchschlüssels zu definieren oder neu zu schreiben, gib den Schlüsselnamen in Klammern ( [key] ) an, gefolgt von = und dem Wert:
local testDictionary = {fruitName = "Lemon",sour = true}-- Wert von bestehenden Schlüsseln änderntestDictionary["fruitName"] = "Cherry"testDictionary["sour"] = false-- Füge ein neues Schlüssel-Wert-Paar eintestDictionary["fruitCount"] = 10print(testDictionary["fruitName"]) -- Kirscheprint(testDictionary["sour"]) -- falschprint(testDictionary["fruitCount"]) -- 10
Über Wörterbücher iterieren
Um über ein Wörterbuch zu iterieren, verwende die globale pairs()-Funktion in einem for-Loop:
local testDictionary = {fruitName = "Lemon",fruitColor = "Yellow",sour = true}for key, value in pairs(testDictionary) doprint(key, value)end--[[ Ausgabe:fruitName Lemonsour truefruitColor Yellow]]
Schlüssel-Wert-Paare entfernen
Um ein Schlüssel-Wert-Paar aus einem Wörterbuch zu entfernen oder zu löschen, lege seinen Wert für einen Schlüssel auf nil fest.
local testDictionary = {fruitName = "Lemon",fruitColor = "Yellow",sour = true}testDictionary["sour"] = nilfor key, value in pairs(testDictionary) doprint(key, value)end--[[ Ausgabe:fruitName LemonfruitColor Yellow]]
Tabellen als Referenzen
Wenn du einen Tisch in einer neuen Variable speicherst, erstellt Luau keine Kopie dieses Tisches.Stattdessen wird die Variable zu einer Referenz oder einem Zeiger auf die ursprüngliche Tabelle.Jede Referenz auf eine Tabelle spiegelt alle Änderungen an der ursprünglichen Tabelle wider:
local originalArray = {10, 20}local arrayReference = originalArrayprint("Original:", originalArray[1], originalArray[2])print("Reference:", arrayReference[1], arrayReference[2])-- Ändere Werte im ursprünglichen ArrayoriginalArray[1] = 1000originalArray[2] = 2000print("Reference:", arrayReference[1], arrayReference[2])--[[ Ausgabe:Original: 10 20Reference: 10 20Reference: 1000 2000]]
Tabellen klonen
Flache Klone
Um eine Tabelle ohne verschachtelte Tabellen zu kopieren, bietet Luau die table.clone()-Methode an.
local original = {key = "value",engine = "Roblox",playerID = 505306092}local clone = table.clone(original)
Tiefe Klone
Um einen komplexeren Tisch mit verschachtelten Tabellen darin zu kopieren, musst du eine rekursive Funktion verwenden, die ähnlich ist wie die gefolgte Profile:
-- Die Funktion, die für das tiefe Kopieren einer Tabelle verwendet wird
local function deepCopy(original)
-- Definieren Sie die neue Tabelle für die Kopie
local copy = {}
-- Schleife durch den ursprünglichen Tabelle, um zu klonen
for key, value in original do
-- Wenn der Typ des Werts eine Tabelle ist, kopiere ihn tief in den Schlüssel (Index)
-- Sonst (oder) ist der Typ keine Tabelle, weise den Standardwert dem Index zu
copy[key] = type(value) == "table" and deepCopy(value) or value
end
-- Gib die abgeschlossene Kopie der tief geklonten Tabelle zurück
return copy
end
Mit der Funktion vor Ort kannst du eine tiefe Kopie wie folgt erstellen:
local original = {key = "value",playerInfo = {playerID = 505306092,playerName = "PlayerName"},otherInfo = {{{1, 3, 5, 7, 9}}}}local clone = deepCopy(original)
Tabellen einfrieren
Das Einfrieren eines Tisches macht ihn lesbar, was nützlich ist, um konstante Werte zu erstellen, die du nicht ändern möchtest.Einfrieren ist permanent; es gibt keine Methode "auftauen" oder "auftauen" .Um zu überprüfen, ob eine Tabelle eingefroren ist, verwende table.isfrozen().
Tiefgefrieren
Um einen Tisch ohne verschachtelte Tabellen einzufrieren, bietet Luau die table.freeze()-Methode an.
local target = {key = "value",engine = "Roblox",playerID = 505306092}table.freeze(target)target.playerID = 1 --> attempt to modify a readonly table
Tiefe Gefrierungen
Um einen komplexeren Tabelle mit verschachtelten Tabellen darin einzufrieren, verwende eine rekursive Funktion ähnlich der gefolgte Profile:
local function deepFreeze(target)
-- Tiefe Einfrierung des Tisches
table.freeze(target)
-- Überprüfe jeden Schlüssel der Tabelle und friere ihn ein, wenn es sich um eine Tabelle handelt
for _, v in target do
if type(v) == "table" then
deepFreeze(v)
end
end
end
Mit der Funktion vor Ort kannst du einen Tabelle wie folgt tief einfrieren:
local target = {key = "value",playerInfo = {playerID = 505306092,playerName = "PlayerName"},otherInfo = {{{1, 3, 5, 7, 9}}}}deepFreeze(target)target.playerInfo.playerID = 1 --> attempt to modify a readonly table