Menu
Coddy logo textTech

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

table.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.

challenge icon

Aufgabe

Einfach

Erstelle ein typisiertes Array queue: {string}, das mit "save" und "load" initialisiert wird. Dann:

  1. füge "<code>quit" mit table.insert hinzu
  2. füge "<code>help" an Position 1 ein
  3. entferne den letzten Befehl mit table.remove und speichere den zurückgegebenen Wert

Gib schließlich jeweils in einer eigenen Zeile Folgendes aus:

  1. den entfernten Befehl
  2. wie viele Befehle verbleiben
  3. den ersten Befehl in der Warteschlange
  4. 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
quiz iconTeste dich selbst

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

Übe selbstständig: Online-Lua-Compiler