| Andreas Rozek |
|
Lua_03 - Experimente mit Tag-gestützter Vererbung"Lua_03" implementiert ein einfaches Verfahren für (einfache) "Vererbung" unter Zuhilfenahme von "Tag-Methoden". Das Grundprinzip ist hinreichend beschrieben [1,2,3,4] und braucht deshalb an dieser Stelle nur kurz skizziert zu werden: jeder Versuch, auf ein nicht existierendes Tabellen-Element zuzugreifen, hat - sofern definiert - den Aufruf einer passenden Tag-Methode zur Folge. In dieser Methode wird nun nach einem passenden Prototypen für das aktuelle Objekt und innerhalb dieses Prototypen nach dem gewünschten Element gesucht. Erst wenn auch diese Suche fehlschlägt, gilt das Element als unauffindbar. Zusätzlich zum skizzierten Vererbungsmechanismus enthält "Lua_03" eine Reihe von Routinen, die die Vererbung flankieren:
Zur Demonstration der genannten Funktionen und Methoden werden in "Lua_03" zwei miteinander in Beziehung stehende Prototypen angelegt: ein "User"-Objekt beschreibt einen einzelnen "Benutzer", während ein "Group"-Objekt eine Benutzergruppe repräsentiert. Da "User" als Prototyp von "Group" fungiert, lassen sich die darin definierten Methoden auch auf "Group"-Objekte anwenden. "Lua_03" wird ohne Angabe von Kommandozeilen-Argumenten aufgerufen lua Lua_03.lua und liefert folgende Ausgabe: Lua_03 - first experiments with tag-based (single) inheritance firstUser = Rozek, Elena secondUser = Rozek, Andreas Phantom = (unknown), (unknown) UserGroup = Rozek Family [Rozek, Elena; Rozek, Andreas] UserGroup:inheritsfrom(User)? 1 UserGroup:inheritsfrom(Object)? 1 type(UserGroup) = object Die Programmausgabe wird zweckmäßigerweise in Verbindung mit dem zugehörigen Quelltext analysiert und verdeutlicht die korrekte Funktion der zuvor beschriebenen Funktionen und Methoden. QuelltextDas Programm steht im Quelltext zur Verfügung:
Da die innerhalb von "Lua_03.lua" definierten Funktionen auch in anderen Beispielen eingesetzt werden sollen, können sie als eigene Skript-Datei heruntergeladen werden:
Literaturhinweise
|
| http://www.Andreas-Rozek.de/Lua/Acquainting/Lua_03.html | (letzter Stand: 14.04.2002) |