我怎样才能取消合格方法?

Par*_*ife 9 lisp common-lisp slime

在开发过程中,我定义了一个'initialize-instance:after'方法,该方法不再需要一段时间了,实际上是在我的方式中,因为在它内部调用的代码不再有效.由于unintern函数没有限定符的参数,有什么方法可以"unintern"方法的符号限定符组合,这样我就不必再使用slime-restart-inferior-lisp并从中再次加载项目开始?

Xac*_*ach 16

您可以使用标准的功能find-method,并remove-method做到这一点:

(remove-method (find-method #'frob '(:before) '(vehicle t)))
Run Code Online (Sandbox Code Playgroud)

我发现使用煤泥检查员要容易得多.如果您的函数已命名frob,则可以使用M-x slime-inspect #'frob RET查看所有方法的列表frob并选择要删除的各个方法.


Rai*_*wig 5

看看Xach的答案.

方法收集在通用函数中.UNINTERN与此毫无关系.你想要的是从泛型函数中删除一个方法.

大多数Common Lisp IDE都有办法做到这一点.通过编辑器(Mx undefine ...)或通过一些检查工具.