Menu
Coddy logo textTech

Was ist eine Metatable?

Teil des Abschnitts Logik & Programmablauf der Lua-Journey von Coddy. Lektion 16 von 54.

Eine Metatabelle ist einfach eine gewöhnliche Lua-Tabelle, aber sie hat einen besonderen Zweck. Wenn du eine Metatabelle an eine andere Tabelle anhängst (nennen wir sie die „Haupttabelle“), kannst du ändern, wie sich diese Haupttabelle verhält, wenn bestimmte Operationen mit ihr ausgeführt werden.

Stell es dir so vor: Normalerweise weiß Lua nicht, was zu tun ist, und gibt einen Fehler aus, wenn du versuchst, zwei Tabellen mit dem Operator + zu addieren. Mit einer Metatabelle kannst du jedoch festlegen, was die Addition für deine Tabellen bedeutet. Du könntest dafür sorgen, dass entsprechende Werte addiert, ihre Inhalte verkettet oder etwas anderes ausgeführt wird, das für dein Programm sinnvoll ist.

Metatables funktionieren, indem spezielle Funktionen definiert werden, die Metamethoden genannt werden. Diese Metamethoden haben bestimmte Namen, die mit zwei Unterstrichen beginnen, wie etwa __add für die Addition oder __index zum Nachschlagen fehlender Schlüssel. Wenn Lua auf eine Tabelle mit einer Metatable eine Operation anwendet, prüft es, ob die Metatable über die entsprechende Metamethode verfügt, und verwendet sie, um zu bestimmen, was geschehen soll.

Dieses Konzept eröffnet Möglichkeiten wie das Erstellen benutzerdefinierter Datentypen mit ihrem eigenen Verhalten, das Implementieren objektorientierter Muster, der Schutz von Tabellen vor unerwünschten Änderungen und vieles mehr. In den kommenden Lektionen lernst du, wie du Metatabellen an Tabellen anfügst und Metamethoden verwendest, um ihr Verhalten anzupassen.

Probier es selbst

Diese Lektion enthält keine Programmieraufgabe.

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 Logik & Programmablauf

Übe selbstständig: Online-Lua-Compiler