Questions tagged «arguments»

2
如何在nadvice.el中处理参数列表?
在回答有关新建议系统的另一个问题之后: 在旧式中advice.el,可以操纵建议函数的参数列表的各个成员,而不必对未操纵的那些成员做出任何断言。例如,以下建议: (defadvice ansi-term (around prompt-for-name last) (let ((name (read-from-minibuffer "Tag: "))) (and (not (string= name "")) (ad-set-arg 1 (concat "Term: " name))) ad-do-it)) 允许为ansi-term调用提供(可选)缓冲区名称参数,同时ansi-term仍会通过根据其自身的交互形式进行提示来获取其第一个参数。 (供以后参考,ansi-term的签名为(PROGRAM &optional BUFFER-NAME),其交互形式提示PROGRAM带有多个可能的默认值,但对BUFFER-NAME无效。) 我不确定是否可以在中进行nadvice.el。如果是这样,我不确定该怎么做。我发现了几种替换建议函数的参数列表的方法。 例如,来自* info *(elisp)咨询组合: `:filter-args' Call FUNCTION first and use the result (which should be a list) as the new arguments to …
12 advice  arguments 

3
如何编写透明的“传递”函数包装器?
我所说的“透明的“传递”函数包装器”是一个函数,我们称它为“函数”,它wrapper通过将其所有参数传递给其他函数(称为它)来返回结果wrappee。 在Emacs Lisp中如何完成? 注意:理想的wrapper功能与功能的签名无关wrappee。即它不知道的参数的数量,位置,名称等wrappee;它只是将其所有参数传递给wrappee,就像wrappee最初调用的那样。(不过,您无需弄乱调用堆栈,即可将调用替换wrapper为wrappee。) 我对我的问题发表了部分答案: (defun wrapper (&rest args) (apply 'wrappee args)) 仅当工作wrappee是没有互动。显然,交互函数获取其参数的方式代表了与该(&rest args)咒语所涵盖内容不同的“渠道” 。我还是需要的,因此,是一个equally- wrappee的的-agnostic对应(&rest args)于其中的情况下签名wrappee是一个互动的功能。 (此问题是由先前问题中描述的问题引起的。) 如果需要进一步澄清我要的内容,下面是几个示例,显示了我所追求的Python和JavaScript等效项。 在Python中,实现这种包装器的几种标准方法如下所示: def wrapper(*args, **kwargs): return wrappee(*args, **kwargs) # or wrapper = lambda *args, **kwargs: wrappee(*args, **kwargs) (此处*args代表“所有位置参数”,**kwargs代表“所有关键字参数”。) 相当于JavaScript的是这样的: function wrapper () { return wrappee.apply(this, arguments); } // or wrapper = function …
10 advice  arguments 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.