我在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)))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句