Menu
CoddyTech

Maps deklarieren und auf Elemente zugreifen

Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy. Lektion 16 von 80.

Eine typisierte Map zu deklarieren sieht genauso aus wie die Tabellenkonstruktoren, die du immer schon geschrieben hast: Die Typannotation legt lediglich die Schlüssel- und Werttypen fest:

local stock: {[string]: number} = {apples = 12, bananas = 5}

Lesen und Schreiben verwenden die Indexierung, die du kennst. Bei Schlüsseln, die gültige Bezeichner sind, greifen stock.apples und stock["apples"] auf denselben Eintrag zu; die Klammernotation funktioniert auch mit Schlüsseln, die Leerzeichen enthalten oder in Variablen gespeichert sind:

stock["cherries"] = 20   -- einen neuen Eintrag hinzufügen
stock.bananas = 8        -- einen vorhandenen Eintrag aktualisieren
print(stock["apples"])  -- 12
print(stock["plums"])   -- nil: nie gesetzt

Der Typprüfer kontrolliert jede Zuweisung: stock["apples"] = "many" wird beanstandet, weil "many" keine Zahl ist, und eine Zahl als Schlüssel wird beanstandet, weil Schlüssel Zeichenketten sein müssen.

Um einen Eintrag zu löschen, weise seinem Schlüssel nil zu: stock["bananas"] = nil entfernt ihn vollständig, und spätere Lesezugriffe liefern nil. Es gibt keine separate Löschfunktion; das ist die übliche Lua-Idiomatik und wird auch bei einer Map weiterhin auf Typkorrektheit geprüft.

challenge icon

Aufgabe

Einfach

Führe eine typisierte Zuordnung von Schulmaterialien.

  1. Deklariere local stock: {[string]: number} = {pens = 40, rulers = 15}.
  2. Füge stock["erasers"] = 25 hinzu und ändere rulers zu 10.
  3. Gib den Bestand von pens, rulers, erasers und glue aus, jeweils in einer eigenen Zeile.

Klicke auf Run Code: Die Ausgabe zeigt 40, 10, 25 und nil.

Probier es selbst

-- 1) Deklariere stock: {[string]: number} mit pens = 40, rulers = 15
-- 2) Füge erasers = 25 hinzu und ändere rulers auf 10
-- 3) Gib pens, rulers, erasers und dann glue aus

Alle Lektionen in Einführung in Luau

Übe selbstständig: Online-Luau-Compiler