从文档中:
删除方法泛型函数方法
它需要一个通用函数对象和一个方法对象作为参数。
人们可以通过以下方式找到该方法find-method
.
CL-USER 39 > (find-method #'speak
(list :around)
(list (find-class 'courtier) (find-class t)))
#<STANDARD-METHOD SPEAK (:AROUND) (COURTIER T) 42001285EB>
CL-USER 40 > (remove-method #'speak
(find-method #'speak
(list :around)
(list (find-class 'courtier)
(find-class t))))
#<STANDARD-GENERIC-FUNCTION SPEAK 422000A68C>
另请注意,良好的 Lisp 开发环境还可能允许删除编辑器或检查器中的方法。
请注意,在 Lisp 监听器中,不需要调用find-method
像上面一样两次。变量*
包含最后的结果。
CL-USER 43 > (find-method #'speak
(list :around)
(list (find-class 'courtier)
(find-class t)))
#<STANDARD-METHOD SPEAK (:AROUND) (COURTIER T) 4200150DEB>
CL-USER 44 > (remove-method #'speak *)
#<STANDARD-GENERIC-FUNCTION SPEAK 422000A68C>
这是在 GNU Emacs 中使用 SLIME 的另一个交互示例推介会SLIME 功能已启用。 A推介会是 Lisp 输出,它保持打印对象和生成文本之间的联系。
![Slime REPL](https://i.stack.imgur.com/KjlPV.png)
致电find-method
功能。它返回方法。这里我们使用presentations
,它保持文本和 Lisp 对象之间的联系。输出以红色显示,它是鼠标敏感。将鼠标移动到红色返回的对象上将添加交互选项。
现在输入(remove-method #'speak
然后在红色输出上单击鼠标中键(或 SLIME 配置为使用的任何内容):演示文稿(文本和连接的对象)将被复制到该行。类型)
并输入表格。那么,SLIME 实际上已经用真实的对象而不是文本表示构建了一个列表。
这就是 repl 在 Symbolics Lisp Machine 和 CLIM / McCLIM 中的工作方式......