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 gesetztDer 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.
Aufgabe
EinfachFühre eine typisierte Zuordnung von Schulmaterialien.
- Deklariere
local stock: {[string]: number} = {pens = 40, rulers = 15}. - Füge
stock["erasers"] = 25hinzu und ändererulerszu10. - Gib den Bestand von
pens,rulers,erasersundglueaus, 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
1Erste Schritte mit Luau
Was ist Luau?Warum Luau nutzen?Dein erster Luau-CodeTypprüfung & FehlermodiZusammenfassung: Einführung in Luau4Mit Funktionen arbeiten
Parameter und Rückgabewerte typisierenAnonyme Funktionen typisierenFunktionen ohne RückgabewertOptionale ParameterStandardwerte für ParameterStandardwerte für boolesche WerteFunktionen mit variabler ParameteranzahlFunktionstypen definierenRückblick: typisierte Funktionen7Projekt: Typisierter Aufgabenmanager
Projekt: Die AufgabenstrukturFunktion zum Hinzufügen einer Aufgabe2Grundlegende Typen
Zahl, String und BooleanDer Typ „any“: NotausgangDer Typ „unknown“Nil- und optionale TypenTypinferenz in der PraxisExplizite TypannotationenRückblick: Übung zu grundlegenden Typen5Typ-Aliase, Union-Typen und Schnittmengen-Typen
Typ-Aliase für PrimitivenUnion-TypenArbeiten mit Union-TypenLiterale TypenSchnittmengen-Typen (Intersection Types)Kombination von Typ-AliasenZusammenfassung: Fortgeschrittene Typ-Kombinationen3Typisierte Tabellen: Arrays & Maps
Typisierte ArraysElemente hinzufügen und auslesenWas ist ein Map-Typ?Maps deklarieren und auf Elemente zugreifenTabellen durchlaufenTabellen mit gemischten FormenEin Raster auslesenEin Raster erstellentable.unpackRückblick: Arrays und MapsÜbe selbstständig: Online-Luau-Compiler