Indexsignaturen
Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy. Lektion 78 von 80.
Map-Typen wie {[string]: number} sind dir bereits im Kapitel über Tabellen begegnet: eine Indexsignatur: Jeder beliebige Zeichenfolgenschlüssel verweist auf einen Zahlenwert. Sie sind besonders nützlich, wenn die Schlüssel beim Schreiben des Codes noch nicht bekannt sind: Zähler, Einstellungen, Caches, Punktestände – alles, was zur Laufzeit aufgebaut wird.
type Counts = {[string]: number}
local counts: Counts = {}
counts["potion"] = 3 -- Jeder Zeichenkettenschlüssel ist erlaubt
counts["sword"] = 1
counts["potion"] += 1 -- Werte werden als Zahlen überprüftBei der Arbeit mit Maps sind zwei Fakten zur Laufzeit wichtig. Erstens gibt das Lesen eines Schlüssels, der nie gesetzt wurde, nil zurück: Das klassische Zählmuster fängt diesen Fall mit or ab und macht aus „nicht vorhanden“ eine 0:
counts[item] = (counts[item] or 0) + 1Zweitens durchläuft pairs() die Schlüssel einer Map in nicht festgelegter Reihenfolge: Bei zwei Ausführungen desselben Programms können die Schlüssel in unterschiedlicher Reihenfolge besucht werden. Wenn die Ausgabe vorhersehbar sein muss, sammle die Schlüssel in einem Array, sortiere sie mit table.sort und durchlaufe stattdessen das sortierte Array:
local keys: {string} = {}
for key in pairs(counts) do
table.insert(keys, key)
end
table.sort(keys)
for _, key in ipairs(keys) do
print(`{key}: {counts[key]}`)
endAufgabe
EinfachSpeichere Punktestände für Spieler, deren Namen du nicht im Voraus kennst.
- Schreibe
type Scores = {[string]: number}und erstellelocal scores: Scores = {}. - Füge Punkte hinzu:
scores["mia"] = (scores["mia"] or 0) + 5, dann dasselbe für"leo"mit3. - Gib
scores["mia"],scores["leo"]undscores["zed"]aus.
Drücke Run Code: Die Ausgabe zeigt 5, 3 und nil.
Probier es selbst
-- 1) type Scores = {[string]: number}, dann local scores: Scores = {}
-- 2) Füge 5 Punkte für "mia" und 3 für "leo" hinzu
-- 3) Gib mia, leo und zed 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-Kombinationen8Enums auf die Luau-Art
Das Enum-Pattern in LuauNumerische Enums mit TablesString-Enums als UnionsVerwendung von Literal Union EnumsKonstante Tables einfrierenZusammenfassung: Enums auf die Luau-Art11Fortgeschrittene Themen
TypzusicherungenTypwächter mit typeofDer never-TypNull-Sicherheit im Strict-ModusIndexsignaturenRückblick: Typen von KonfigurationswertenRückblick: Typen feinabstimmen3Typisierte 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