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.

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 Einfügen eines String-Werts in ein {number}-Array wird bereits beim Tippen 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 und 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 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 hinter #queue — wird stillschweigend zu nil ausgewertet. Es wird kein Fehler ausgelöst. Prüfen Sie daher auf nil, bevor Sie einen Wert verwenden, von dem Sie nicht sicher sind, ob er existiert.

Ein weiteres Werkzeug für Ihre Werkzeugkiste: table.freeze(t) macht eine Tabelle zur Laufzeit schreibgeschützt — jeder spätere Versuch, sie zu ändern, löst einen Fehler aus. Es ist Luaus Antwort für konstante Daten (Konfigurationen, feste Level-Listen), die sich nach der Erstellung niemals ändern dürfen.

challenge icon

Aufgabe

Einfach

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

  1. append "<code>quit" mit table.insert
  2. insert "<code>help" an position 1
  3. remove den last command mit table.remove und speichere den zurückgegebenen Wert

Schließlich print, jeweils in einer eigenen Zeile:

  1. den removed command
  2. wie viele commands übrig bleiben
  3. den first command in der queue
  4. queue[10] — ein 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