如何编写透明的“传递”函数包装器?
我所说的“透明的“传递”函数包装器”是一个函数,我们称它为“函数”,它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 …