Menu
CoddyTech

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üft

Bei 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) + 1

Zweitens 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]}`)
end
challenge icon

Aufgabe

Einfach

Speichere Punktestände für Spieler, deren Namen du nicht im Voraus kennst.

  1. Schreibe type Scores = {[string]: number} und erstelle local scores: Scores = {}.
  2. Füge Punkte hinzu: scores["mia"] = (scores["mia"] or 0) + 5, dann dasselbe für "leo" mit 3.
  3. Gib scores["mia"], scores["leo"] und scores["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

Übe selbstständig: Online-Luau-Compiler