Wörterbücher sind Tabellen, die Namen oder Schlüssel mit einem Wert statt mit einem Index verknüpfen.
Beispiel:
Luau-Wörterbuchsyntax
local pet = {Name = "Bobbie",Type = "Dog",}
Verwende Wörterbücher, wenn du Werte kennzeichnen musst, nicht nur in der Reihenfolge listen, wie es ein Array tut.Übe die Verwendung von Wörterbüchern in diesem Tutorial, indem du Werte, die mit einem Spieler verbunden sind, manipulierst.
Wörterbuchsyntax
Wie Arrays werden Wörterbücher einer Variable mit geschweiften Klammern zugewiesen {}. Schlüssel-Wert-Paare werden auf separaten Linien gespeichert, gefolgt von einem Komma.Schlüssel und Werte können jede Art von Daten sein, einschließlich Zeichenketten, Zahlen und Variablennamen.
local playerNames = {player1 = "Zap",player2 = "Kel",}print(playerNames["player1"])
Um Teile oder andere instanzierte Objekte als Schlüssel zu referenzieren, verwenden Sie Klammern.
local greenPart = workspace.GreenPartlocal redPart = workspace.RedPartlocal partList = {[greenPart] = true,[redPart] = false,}print(partList[redPart])
Ein Wörterbuch erstellen
Eine alltägliche Verwendung von Wörterbüchern besteht darin, Spieler- oder Charakterinformationen zu organisieren.Diese Schritte erkunden, wie die Informationen eines theoretischen Feindcharakters gespeichert und abgerufen werden können.
In einem neuen Skript erstellen Sie ein Wörterbuch mit dem Namen enemy.
local enemy = {}Der erste Schlüssel im Wörterbuch wird den Namen des Gegners mit einer Variable namens Name verfolgen.
local enemy = {Name}Weise dem Schlüssel einen Feindnamen zu, gefolgt von einem Komma.
local enemy = {Name = "Spike",}Fügen Sie ein zweites Schlüssel-Wert-Paar hinzu, wie viel Gesundheit der Feind haben sollte. Denken Sie daran, dass Schlüssel immer dens gleichen Datentyp verwenden sollten, aber Werte nicht müssen
local enemy = {Name = "Spike",Health = 1000,}
Verwende Lexikonwerte
Es gibt zwei Wege, um auf Wörterbuchwerte zuzugreifen:
- tableName["keyName"] (wichtig, beachten sie die zitate)
- tableName.keyName
local enemy = {Name = "Spike",Health = 1000,}print("The villain " .. enemy["Name"] .. " approaches!")print("The villain " .. enemy.Name .. " approaches!")
Welcher Stil zu verwenden, hängt in der Regel vom Zweck des Tisches ab.Für Tabellen, die eine Sammlung von Werten wie eine Liste von Spielern auf einem Server enthalten, verwenden Entwickler in der Regel tableName["keyName"] .Für ein Wörterbuch, das ein Objekt beschreibt, sind Entwickler wahrscheinlicher, tableName.keyName zu verwenden.
Ändere einen Wörterbuch-Wert
Die Änderung des Werts eines Schlüssels ist gleich wie jede andere Variable; verwende den gleichberechtigten = -Operator.
Unter der enemy Tabelle legen Sie den Namen des Feindes auf etwas anderes fest.
local enemy = {Name = "Spike",Health = 1000,}enemy.Name = "Rana"print("The enemy's name is " .. enemy.Name)Teste deine Ausgabe und überprüfe das Ausgabe-Fenster.
Vorexistierende Variablen als Schlüssel
Wörterbücher können mit vorher existierenden Variablen interagieren, die in anderen Teilen eines Skripts deklariert wurden.Das folgende Codierungsbeispiel verwendet eine Variable, um den Namen eines Spielers als Schlüssel hinzuzufügen, wenn er sich der Erfahrung anschließt, und legt dann seinen Punktewert auf 0 fest.
In ServerScriptService erstellen Sie ein neues Skript mit dem Namen PlayerPoints.Im Skript holen Sie sich den Spielerservice und erstellen ein leeres Wörterbuch mit dem Namen playerPoints.
local Players = game:GetService("Players")local playerPoints = {}Code eine lokale Funktion für das Festlegen von Spielerpunkten mit einem Parameter für eine neue Spielervariable. Verbinde die Funktion mit dem Players.PlayerAdded-Ereignis.
local playerPoints = {}local function setPoints(newPlayer)endPlayers.PlayerAdded:Connect(setPoints)Füge in der Funktion eine Variable hinzu, um die Name des Spielers zu erhalten, eine Eigenschaft in jedem Spieler -Objekt und eine Druckausgabe für den Test.
local function setPoints(newPlayer)local name = newPlayer.Nameprint("hello " .. name)endFügen Sie name in das playerPoints Wörterbuch als Schlüssel ein und legen Sie den Wert, die Punkte des Spielers, auf 0 fest
local function setPoints(newPlayer)local name = newPlayer.Nameprint("hello " .. name)playerPoints[name] = 0endVerwende name, um den Namen des Spielers auszudrucken, und playerPoints[name], um den Wert der Schlüssel zu drucken, die der Variable entsprechen.
local function setPoints(newPlayer)local name = newPlayer.Nameprint("hello " .. name)playerPoints[name] = 0print(name .. " has " .. playerPoints[name] .. " points.")endFühre das Projekt aus und beobachte den Output.
Skript fertiggestellt
local Players = game:GetService("Players")
local playerPoints = {
}
local function setPoints(newPlayer)
local name = newPlayer.Name
print("hello " .. name)
playerPoints[name] = 0
print(name .. " has " .. playerPoints[name] .. " points.")
end
Players.PlayerAdded:Connect(setPoints)
Optionale Herausforderungen
Im Folgenden sind einige Herausforderungen aufgeführt, die sich auf die Verwendung von Wörterbüchern auf unterschiedliche Weise beziehen. Sieh dir an, ob du den Code dafür erstellen kannst
- Erstelle ein Fallteil, das einem Spieler Schaden über Zeit zufügt. Sobald ein Spieler die Falle berührt, schädige ihn, warte, und lass ihn dann wieder beschädigt werden.
- Erstelle eine Funktion, die überprüft, welcher von zwei Spielern die meisten Punkte hat, indem auf ein Wörterbuch zugegriffen wird.
- Erstelle eine Verschlüsselung, ein System zum Wechseln einer Zeichenkette für eine andere, um einen "geheimen" Code zu erstellen.Zum Beispiel kann der Buchstabe "A" mit "G" getauscht werden, oder das Wort "Apfel" kann mit "Orange" ausgetauscht werden.
Wörterbücher und Paare()
pairs() ist eine Funktion, die oft verwendet wird, um durch Wörterbücher zu iterieren. Ein Beispiel wird unten angezeigt.
local myDictionary = {["Blue Player"] = "Ana",["Gold Player"] = "Binh",["Red Player"] = "Cate",}for key, value in pairs(myDictionary) doprint(key .. " is " .. value)end
pairs() kann verwendet werden, um mit dem Schlüssel, dem Wert oder beidem eines Wörterbuch-Elements zu arbeiten.In der for-Schleife unten ist die erste Variable der Schlüssel.Die zweite Variable ist der Wert.Das Wörterbuch, mit dem Sie arbeiten möchten, wird an pairs() übergeben.
local inventory = {["Gold Bricks"] = 43,Carrots = 3,Torches = 2,}print("You have:")for itemName, itemValue in pairs(inventory) doprint(itemValue, itemName)end
Wenn er ausgeführt wird, druckt der Code Folgendes aus:
You have:43 Gold Bricks3 Carrots2 Torches
Zusammenfassen
Wörterbücher sind Tabellen, die Schlüssel-Wert-Paare anstelle von indexierten Werten verwenden.Wörterbücher und Arrays beginnen ähnlich, indem sie dem Wert einer Variable gerundete Klammern zuweisen.Halte Einträge mit Kommata getrennt.
Alle Schlüssel innerhalb eines Wörterbuchs sollten denselben Datentyp verwenden, aber die Werte können Datenformate ohne Probleme mischen.
Die Art und Weise, wie ein Wörterbuch zugänglich ist, kann seinen Zweck vermitteln.Ein Wörterbuch von feindlichen Eigenschaften wird wahrscheinlich mit dem Punktoperator zugänglich sein, während eine Liste von Namen wahrscheinlich tableName[keyName] verwendet.
Wenn Sie Klammern verwenden, seien Sie vorsichtig; Schlüsselnamen, die innerhalb der Tabelle erstellt wurden, müssen als Zeichenketten behandelt werden: tableName["keyName"] .Wenn jedoch auf Objekte wie Teile verwiesen wird, sind Zitate nicht erforderlich: tableName[keyName] .
Viele Skripte müssen durch Wörterbücher oder Arrays gehen, aber du kennst möglicherweise nicht immer den Anfang und das Ende dieser Datenstrukturen.Zum Beispiel kann ein Wörterbuch von Spielern sich ändern oder Spieler können ein Array-Inventar unterschiedlicher Größe haben.
In diesen Situationen können Sie pairs() und ipairs() in einem for Schleifen verwenden, um jedes Element ohne bekannte Start- und Endpunkte durchzugehen.Du kannst auch die allgemeine Iteration durch das in -Schlüsselwort verwenden, um Elemente durchzuschleifen, ohne die Notwendigkeit von pairs() oder ipairs() .