around-advice is wrapped around the execution of the function
这个解释对我来说并不清楚。所以我决定使用这段代码测试它是如何工作的:
(defun fun ()
(message "hi"))
(fun)
(defadvice fun (around around-fun activate)
(message "3"))
(fun)
输出:
hi
3
这里发生了什么?在定义建议后,为什么我看不到“hi”消息?功能是否完全执行?或者执行建议中定义的代码而不是函数?
答案 0 :(得分:3)
周围意味着建议被执行而不是。
您仍然可以使用ad-do-it
调用原始文件。
见info
只是添加一个小例子:
(defun foo (x)
(* 2 x))
(defadvice foo (around bar activate)
(setq ad-return-value
(if (= x 1)
42
(+ 1 ad-do-it))))
(foo 1)
;; 42
(foo 2)
;; 5
(foo 3)
;; 7