扩展Common Lisp中的&rest参数

Pau*_*han 7 lisp common-lisp

假设我厌倦了一直写"格式t ...",并且想要少点击键.

所以我写这个:

(defun puts (fstring &rest vars)
  (format t fstring vars))

(puts "~a ~a" 1 2)

;; error message results, because vars became (1 2)
Run Code Online (Sandbox Code Playgroud)

现在,vars已经转换成我传入的任何参数列表.它需要"扩展"到一个值列表中.

解决此问题的典型解决方案是什么?

Jer*_*ock 11

您可以使用apply:(apply #'format t fstring vars)扩展vars为单独的参数format.