emacs 中的 defadvice,使用它的正确上下文是什么

use*_*679 3 emacs elisp

有人可以简要解释一下(defadvice ...),我不知道何时是使用它的合适上下文,似乎它在 C/C++/Java 语言中并不常见?如附图所示的例子。非常感谢。在此输入图像描述

Dre*_*rew 5

建议一个函数(无论是正在使用的defadvice还是最近使用的advice-add等)是重新定义它的另一种选择。

如果您不是函数的作者,并且它可能已经在代码之外的各个地方使用,您可以重新定义它或建议它,此后该函数的每次使用都将使用您的重新定义或您的建议。这是可逆的:您可以禁用您的建议。

一般来说,重新定义函数不能与其他库很好地配合,因为其他库本身可能希望以某种方式重新定义或扩展它。

建议的要点是,它允许多个库以合理控制的方式更改或增强函数定义,从而减少不同库互相干扰的机会。或者至少可以轻松消除任何库更改对函数的影响。