Einführung in die Dictionäre

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

Wörterbücher sind Tabellen, die Namen oder Schlüssel mit einem Wert verknüpfen, anstatt mit einem Index.

Beispiel:

Luau-Wörterbuchsyntax

local pet = {
Name = "Bobbie",
Type = "Dog",
}

Verwende Wörterbücher, wenn du Werte kennzeichnen musst, nicht nur auf der Reihenfolge listen, wie es ein Array tut.Übe das Verwenden von Wörterbüchern in diesem Tutorial, indem du Werte, die mit einem Spieler:inverbunden sind, manipulierst.

Wörterbuchsyntax

Wie Arrays werden Wörterbücher einer Variable mit kurzen Klammern zugewiesen {} . Schlüssel-Wert-Paare werden auf getrennten Linien gespeichert, gefolgt von einem Komma.Schlüssel und Werte können jede eingebenvon 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, verwende Klammern.


local greenPart = workspace.GreenPart
local redPart = workspace.RedPart
local partList = {
[greenPart] = true,
[redPart] = false,
}
print(partList[redPart])

Erstelle ein Wörterbuch

Eine alltägliche Verwendung von Wörterbüchern ist die Organisation von Spieler- oder Charakterinformationen.Diese Schritte erkunden, wie die Informationen eines theoretischen Feindcharakters gespeichert und abgerufen werden können.

  1. Erstelle in einem neuen Skript, das. PL: die Skriptsein Wörterbuch mit dem Namen enemy.


    local enemy = {
    }
  2. Der erste Schlüssel im Wörterbuch wird den Namen des Feindes mit einer Variable namens Name verfolgen.


    local enemy = {
    Name
    }
  3. Weise dem Schlüssel einen Feindnamen zu, gefolgt von einem Komma.


    local enemy = {
    Name = "Spike",
    }
  4. Füge ein zweites Schlüssel-Wert-Paar hinzu, wie viel Gesundheit der Feind haben sollte. Denke daran, dass Schlüssel immer dens gleichen eingebenverwenden sollten, aber Werte nicht müssen.


    local enemy = {
    Name = "Spike",
    Health = 1000,
    }

Verwende Wörterbuchwerte

Es gibt zwei Möglichkeiten, 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!")

Welchen 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 Programmierer wahrscheinlicher, tableName.keyName zu verwenden.

Ändere einen Dictionär-Wert

Die Änderung des Werts eines Schlüssels ist dasselbe wie jede andere Variable; verwende den gleichberechtigten = -Operator.

  1. 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)
  2. Teste deine Ausgabe und überprüfe das Ausgabe-Fenster.

Vorhandene Variablen als Schlüssel

Wörterbücher können mit vorhandenen Variablen interagieren, die in anderen Teilen eines Skript, das. PL: die Skriptsdeklariert wurden.Das folgende Codierungsbeispiel verwendet eine Variable, um den Namen eines Spieler:inals Schlüssel hinzuzufügen, wenn er sich der Erfahrung anschließt, und setzt dann ihren Punktewert auf 0.

  1. In ServerScriptService erstellen Sie ein neues Skript mit dem Namen PlayerPoints.Im Skript, das. PL: die Skriptsholen Sie sich den Spielerservice und erstellen ein leeres Wörterbuch mit dem Namen playerPoints.


    local Players = game:GetService("Players")
    local playerPoints = {
    }
  2. 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)
    end
    Players.PlayerAdded:Connect(setPoints)
  3. Füge in der Funktion eine Variable hinzu, um die Name des Spieler:inzu erhalten, eine Eigenschaft in jedem Spieler Objekt und eine Druckausgabe für den Test.


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("hello " .. name)
    end
  4. Füge name in das playerPoints Wörterbuch als Schlüssel ein und lege den Wert, die Punkte des Spieler:in, auf 0 fest.


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("hello " .. name)
    playerPoints[name] = 0
    end
  5. Verwende 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.Name
    print("hello " .. name)
    playerPoints[name] = 0
    print(name .. " has " .. playerPoints[name] .. " points.")
    end
  6. Führe das Projekt aus und beobachte die Ausgabe.

Abgeschlossenes Skript, das. PL: die Skripts

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 zu, ob du den Code dafür erstellen kannst.

  • Erstelle ein Fallteil, das einem Spieler:inSchaden ü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 sie auf ein Wörterbuch zugreift.
  • Erstelle eine Verschlüsselung, ein System zum Wechseln einer Zeichenkette für eine andere, um einen "geheimen" Codeszu erstellen.Zum Beispiel kann der Buchstabe "A" mit "G" getauscht werden, oder das Wort "Apfel" kann mit "Orange" getauscht werden.

Wörterbücher und pairs()

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) do
print(key .. " is " .. value)
end

pairs() kann verwendet werden, um mit dem Schlüssel, dem Wert oder beidem eines Dictionär-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 du arbeiten möchtest, wird an pairs() übergeben.


local inventory = {
["Gold Bricks"] = 43,
Carrots = 3,
Torches = 2,
}
print("You have:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

Wenn er ausgeführt wird, druckt der Code gefolgte Profileaus:


You have:
43 Gold Bricks
3 Carrots
2 Torches

Übersicht

Wörterbücher sind Tabellen, die Schlüssel-Wert-Paare verwenden, anstatt indexierte Werte.Wörterbücher und Arrays beginnen ähnlich, indem sie dem Variablen kurze Klammern zuweisen.Halte Einträge mit Kommas getrennt.

Alle Schlüssel innerhalb eines Wörterbuchs sollten denselben eingebenverwenden, 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"] .Bei der Referenzierung von Objekten wie Teilen sind jedoch Zitate nicht erforderlich: tableName[keyName] .

Viele Skripte müssen durch Wörterbücher oder Arrays gehen, aber du weißt möglicherweise nicht immer den Anfang und das Ende dieser Datenstrukturen.Zum Beispiel kann ein Wörterbuch von Spielern sich ändern oder Spieler 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 Schlüsselwort in verwenden, um durch Elemente zu schleifen, ohne die Notwendigkeit von pairs() oder ipairs() .