gpt4 book ai didi

emacs - 如何将&rest参数传递给emacs lisp中的另一个函数?

转载 作者:行者123 更新时间:2023-12-04 04:11:05 25 4
gpt4 key购买 nike

我在init.el中有一个方便的defun,可以进行一些日志记录

(defvar log4me::loglevel 5
"Global loglevel.")

(defun log4me (level logmsg)
"Log message."
(interactive)
(when (>= level log4elisp::loglevel)
(message logmsg))))

这种工作,但我不知何故经常做
  (log4me somelevel (format "mymessage with %d" 1))

所以我发现了emacs lisp&rest参数,我认为我可能会这样使用:
(defun log4me (level logmsg &rest formatparams)
"Log message."
(interactive)
(when (<= level log4elisp::loglevel)
(message (format logmsg formatparams))))

(log4me 3 "Hello %ust!" 1)

由于formatparams实际上是(1)而不是1,因此它重新显示为“格式说明符与参数类型不匹配”的错误。

有没有一种很好的方法可以将格式参数包含到log4elisp defun中,并使它们作为“常规”参数(而不是单个列表)到达格式函数调用中?

最佳答案

您需要的是 apply :

(defun log4me (level logmsg &rest formatparams)
"Log message."
(interactive)
(when (<= level log4elisp::loglevel)
(apply #'message logmsg formatparams)))

关于emacs - 如何将&rest参数传递给emacs lisp中的另一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26690833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com