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?
Sie können dazu die Standardfunktionen find-method
und remove-method
verwenden:
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.
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.
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 Ссылка .
Tags und Links lisp common-lisp slime