Zusammenfassung – Schreibgeschützte Tabellen
Teil des Abschnitts Logic & Flow der Lua-Journey von Coddy — Lektion 23 von 54.
Aufgabe
EinfachSchreiben Sie eine Funktion makeReadOnly, die original entgegennimmt und eine schreibgeschützte Version der Tabelle zurückgibt.
Erstellen Sie eine Proxy-Tabelle mit einer Metatabelle, die das Lesen aus der ursprünglichen Tabelle ermöglicht, aber jegliche Änderungen verhindert.
Logik:
- Erstellen Sie eine leere Proxy-Tabelle
- Erstellen Sie eine Metatabelle, bei der
__indexauf die ursprüngliche Tabelle gesetzt ist (um das Lesen zu ermöglichen) - Fügen Sie
__newindexzur Metatabelle hinzu, die nichts tut (um Änderungen zu blockieren) - Verknüpfen Sie die Metatabelle mit dem Proxy unter Verwendung von
setmetatable() - Geben Sie die Proxy-Tabelle zurück
Parameter:
original(table): Die Tabelle, die vor Änderungen geschützt werden soll
Rückgabewert: Eine Proxy-Tabelle, die schreibgeschützten Zugriff auf die ursprüngliche Tabelle bietet (table)
Probier es selbst
function makeReadOnly(original)
-- Schreibe hier den Code
end
Alle Lektionen in Logic & Flow
1Fortgeschrittene Table-Iteration
Iterieren mit pairs()Iterieren mit ipairs()pairs() vs. ipairs()Zusammenfassung – Charakterbogen4Einführung in Metatables
Was ist eine Metatable?setmetatable & getmetatableDie __index-MetamethodeDie __newindex-MetamethodeDie __tostring-MetamethodeArithmetische Metamethoden Teil 1Arithmetische Metamethoden Teil 2Zusammenfassung – Schreibgeschützte Tabellen7Fortgeschrittene String-Manipulation
string.gsub() für ErsetzungenEinführung in String-Patternsstring.find()string.match()Iterieren mit string.gmatch()Rückblick – Log-File-Parser2Weitere Funktionen der Table-Bibliothek
table.concat()Tabellenerstellung & unpack()table.sort()Benutzerdefiniertes Sortieren mit FunktionenRückblick – Highscore-Tabelle