【问题标题】:Elisp defadvice around clarification省略关于澄清的错误建议
【发布时间】:2014-02-01 19:16:08
【问题描述】:

Documentation for defadvice 说:

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”消息?功能是否完全执行?还是执行通知中定义的代码而不是函数?

【问题讨论】:

    标签: elisp


    【解决方案1】:

    Around 意味着执行通知而不是函数。 您仍然可以使用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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多