我希望能够做到以下几点:
(function-arity (intern "expt"))
我在谷歌上搜索到了这个解决方案:https://github.com/emacsmirror/parser/blob/master/parser-fn.el,但它使用了
help-function-arglist
,所以并不完全直观。我希望有更可靠、更稳定的解决方案。我希望能够做到以下几点:
(function-arity (intern "expt"))
help-function-arglist
,所以并不完全直观。我希望有更可靠、更稳定的解决方案。并不存在绝对稳定的函数-参数个数
。 在大多数情况下,人们想要的是根据函数接受的参数个数不同(例如在不同的 Emacs 版本中其签名不同)以不同的方式调用函数,此时“尝试使用多个参数调用它并捕获潜在错误”的方法就是最好的选择。
"exptxy"
解析成 (expt x y)
。重点是不应该将其解析成 (exp t x y)
,因为 exp
具有 1 种元数。 - abo-abo关于help-function-arglist
,我没有发现任何问题,它在这里的功能正常。
然而,指向lambda-arity
的一些bug仍然存在。
例如:
(optional-arglist (memq '&optional arglist))
help-function-arglist
不是非常可靠?它管理函数、宏、别名、自动加载等。 - juanleonhelp-function-arglist
没有任何问题 - 它的工作非常出色。 但是通过处理help-function-arglist
的输出来获取参数数量,对我来说就像解析手册或进行谷歌搜索一样。 - abo-abofunction-arglist
,你会有不同的感受吗? :-) 在我看来,名称中的帮助有些偶然性,因为它被放置在文件中(源代码中有一条注释说该函数可能会移动到subr.el)。 话虽如此,该函数的源代码提示我获取elisp函数的arity并不是非常直接,但我对此并不是很了解。 - juanleonfunction-arity
这样的通用函数。有subr-arity
,但它只适用于内置函数。 - Drew