Hinzufügen und Lesen von Elementen
Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy. Lektion 14 von 73.
Du lässt Lua-Tabellen bereits mit table.insert und table.remove wachsen und schrumpfen: Beide funktionieren bei typisierten Arrays genauso. Der Unterschied besteht darin, dass Luau jetzt prüft, was du einfügst: Wenn du einen String in ein {number}-Array einfügst, wird dies bereits während der Eingabe markiert 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, 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 dich zurück; table.remove(t, 1) entfernt das erste 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 fehlertolerant wie in einfachem Lua: Ein Index, der nichts enthält, queue[0], queue[-1] oder alles hinter #queue wird stillschweigend zu nil ausgewertet. Es wird kein Fehler ausgelöst. Prüfe daher auf nil, bevor du einen Wert verwendest, von dessen Existenz du nicht sicher bist.
Noch ein weiteres Werkzeug für deinen Gürtel: table.freeze(t) macht eine Tabelle zur Laufzeit schreibgeschützt: Jeder spätere Versuch, sie zu ändern, löst einen Fehler aus. Das ist Luau's Lösung für konstante Daten (Konfigurationen, feste Level-Listen), die sich nach ihrer Erstellung niemals ändern dürfen.
Aufgabe
EinfachErstelle ein typisiertes Array queue: {string}, das mit "save" und "load" initialisiert wird. Dann:
- füge
"<code>quit" mittable.inserthinzu - füge
"<code>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 verbleiben
- den ersten Befehl in der Warteschlange
queue[10]: einen Slot, der nichts enthält
Probier es selbst
-- Schreibe Code hier
-- 1) deklariere queue: {string} mit "save" und "load"
-- 2) hänge den genauen Text aus den Anweisungen an, füge den genauen Text aus den Anweisungen 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Übe selbstständig: Online-Lua-Compiler