Hinzufügen und Lesen von Elementen
Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy — Lektion 14 von 73.
Sie vergrößern und verkleinern Lua-Tabellen bereits mit table.insert und table.remove — beide funktionieren bei typisierten Arrays genau gleich. Der Unterschied besteht darin, dass Luau jetzt prüft, was Sie einfügen: Das Pushen eines String in ein {number}-Array wird bereits beim Tippen gemeldet und nicht erst zur Laufzeit von einem verwirrten Spieler entdeckt.
local queue: {string} = {"save", "load"}
table.insert(queue, "quit") -- am Ende anhängen
table.insert(queue, 1, "help") -- an Position 1 einfügen und den Rest verschieben
local last = table.remove(queue) -- entfernt UND gibt das letzte Element zurücktable.remove(t) nimmt das letzte Element heraus und gibt es an Sie zurück; table.remove(t, 1) entfernt das erste Element und verschiebt alles nach unten. Da das Array als {string} typisiert ist, weiß Luau, dass der zurückgegebene Wert ein String ist.
Das Lesen ist genauso nachsichtig wie im normalen Lua: Ein Index, der nichts enthält — queue[0], queue[-1] oder alles jenseits von #queue — wird stillschweigend zu nil ausgewertet. Es wird kein Fehler ausgegeben, prüfen Sie also auf nil, bevor Sie einen Wert verwenden, bei dem Sie nicht sicher sind, ob er existiert.
Ein weiteres Werkzeug für Ihren Werkzeugkasten: table.freeze(t) macht eine Tabelle zur Laufzeit schreibgeschützt — jeder spätere Versuch, sie zu ändern, führt zu einem Fehler. Es ist Luaus Antwort für konstante Daten (Konfigurationen, feste Level-Listen), die sich nach der Erstellung niemals ändern dürfen.
Aufgabe
EinfachErstelle ein typisiertes Array queue: {string}, initialisiert mit "save" und "load". Dann:
- hänge
"quit"mittable.insertan - füge
"help"an Position 1 ein - entferne den letzten Befehl mit
table.removeund speichere den zurückgegebenen Wert
Gib schließlich, jeweils in einer eigenen Zeile, Folgendes aus:
- den entfernten Befehl
- wie viele Befehle übrig bleiben
- den ersten Befehl in der Queue
queue[10]— einen Platz, der nichts enthält
Probier es selbst
-- Schreibe Code hier
-- 1) deklariere queue: {string} mit "save" und "load"
-- 2) hänge "quit" an, füge "help" an Position 1 ein
-- 3) entferne den letzten Befehl, dann gib die vier Werte aus
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
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 Luau4Arbeiten mit Funktionen
Typisierung von Parametern & RückgabewertenTypisierung von anonymen FunktionenFunktionen ohne RückgabewertOptionale ParameterStandard-ParameterwerteVariadische FunktionenDefinieren von FunktionstypenZusammenfassung: Typisierte Funktionen2Grundtypen
Grundlegende Typen: num, str, boolDer Typ 'any': Der AuswegDer Typ 'unknown'Nil- & optionale TypenTypinferenz in der PraxisExplizite TypannotationenZusammenfassung: Praxis zu Grundtypen5Typ-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 ArraysHinzufügen und Lesen von ElementenWas ist ein Map-Typ?Deklarieren und Zugreifen auf MapsIterieren von TabellenGemischt-strukturierte TabellenMehrdimensionale typisierte Arraystable.unpack und VarargsZusammenfassung: Arrays und Maps