Wie kann ich eine qualifizierte Methode starten?

8

Während der Entwicklung habe ich eine "initialize-instance: after" -Methode definiert, die nach einiger Zeit nicht mehr benötigt wird und mich in die Quere kommt, weil darin Code aufgerufen wird, der nicht mehr gültig ist. Da die Funktion unintern kein Argument für das Qualifikationsmerkmal hat, gibt es eine Möglichkeit, die Symbol-Qualifikationsmerkmal-Kombination einer Methode zu "infiltrieren", so dass ich Slime-Restart-Inferior-Lisp nicht laden und laden muss Projekt von Anfang an erneut?

    
Paralife 12.05.2011, 10:12
quelle

3 Antworten

15

Sie können dazu die Standardfunktionen find-method und remove-method verwenden:

%Vor%

Ich finde es viel einfacher, den Schleiminspektor zu benutzen. Wenn Ihre Funktion frob heißt, können Sie M-x slime-inspect #'frob RET verwenden, um eine Liste aller Methoden in frob anzuzeigen und einzelne Methoden zum Entfernen auszuwählen.

    
Xach 12.05.2011, 11:02
quelle
5

Siehe die Antwort von Xach.

Methoden werden in generischen Funktionen gesammelt. UNINTERN hat damit nichts zu tun. Was Sie wollen, ist eine Methode aus einer generischen Funktion zu entfernen.

Die meisten gängigen Lisp-IDEs haben eine Möglichkeit, dies zu tun. Entweder über den Editor (M-x undefine ...) oder über ein Inspektor-Tool.

    
Rainer Joswig 12.05.2011 11:29
quelle
0

Mit AllegroCL 9.0. Xachs Antwort hat bei mir nicht ganz funktioniert.

Die Definition meiner Methode:

%Vor%

forall-expr ist eine Klasse und Bindungen sind nicht getippt. Um die Methode zu finden, die ich verwenden musste:

%Vor%

Dann, um die Definition der Methode, die ich verwendet habe, zu entfernen:

%Vor%

Ich konnte dies aus Fußnote 7 in Ссылка und den Beispielen aus der Lisp HyperSpec für die Suchmethode Ссылка .

    
William Denman 10.04.2013 22:52
quelle

Tags und Links