SYNOPSIS void destruct(object ob) BESCHREIBUNG Zerstoert und entfernt das Objekt ob. Ist ob == 0 (ob wurde schon zerstoert), so passiert nichts. Nach dem Aufruf von destruct() existieren keine globalen Variablen mehr, sondern nur noch lokale Variablen und Argumente. Wenn sich ein Objekt selbst zerstoert, wird die Ausfuehrung nicht sofort abgebrochen. Wird die Efun this_object() aufgerufen, so liefert diese 0 zurueck. Die meisten Mudlibs moegen es nicht, wenn andere Objekte mittels destruct() ins Daten-Nirwana geschickt werden. Stattdessen erwarten sie den Aufruf einer speziellen Lfun im zu zerstoerenden Objekt, welche normalerweise remove() heisst. Damit kann das zu zerstoerende Objekt noch abschliessende Arbeiten im Zusammenhang mit seinem Ableben erledigen, wie z. B. die Anpassung des Gewichtes seiner Umgebung etc. pp. Der Interpreter zerstoert das Objekt nicht sofort, sondern er markiert es als zerstoert, entfernt es von der Liste, die alle Objekte enthaelt, und fuegt es zu der Liste zu zerstoerenden Objekte hinzu. Die tatsaechliche Zerstoerung geschieht erst dann, wenn keine Referenzen mehr auf das Objekt existieren. Deshalb ist es moeglich, dass ein Objekt noch lange nach seiner Zerstoerung Speicher belegt, obwohl es von ausserhalb nicht mehr gefunden wird. BEISPIEL ob->remove(); if(ob) // es existiert noch, vielleicht ist die Lfun // remove() nicht definiert? destruct(ob); Dies ist die Standard-Methode, ein Objekt zu zerstoeren, ihm aber vorher noch die Chance zu geben, es selber zu tun. AENDERUNGEN LDMud 3.2.7: 0 (zerstoerte Objekt) als Argument annehmen. SIEHE AUCH clone_object(E), remove(A)