这一解决办法使我们得以使用<条码>FORMAT,以形成一种扼杀,并具有一个可变的限定。 目的是不为这项职能的每一呼吁安排一个新的<>格式>。 一位良好的共同文献汇编员还可能想汇编一个固定的format string,当“format string ”在运行时间建造时被打败。 见宏观formatter 。
(defun %d (stream &rest args)
"internal function, writing the dynamic value of the variable
DELIM to the output STREAM. To be called from inside JOIN."
(declare (ignore args)
(special delim))
(princ delim stream))
(defun join (list delim)
"creates a string, with the elements of list printed and each
element separated by DELIM"
(declare (special delim))
(format nil "~{~a~^~/%d/~:*~}" list))
解释:
"~{ iteration start
~a print element
~^ exit iteration if no more elements
~/%d/ call function %d with one element
~:* move one element backwards
~}" end of iteration command
<>代码>%d只是内部功能,不应在join
外打电话。 作为标识,它有<条码>%条码>。
rel=“nofollow noreferer”> :>code>foo,从format string 。
各种变量<代码>delim被宣布为特别的,因此可对被转让为%d
功能的划界人具有价值。 由于我们可以将<条码>%d功能从FORMAT
改为限定词,我们需要从其他地方——这里从<条码>中引入的有活力的具有约束力的动态中获取。
职能<代码>%d的唯一目的是写一个限定词——它忽视了<代码>format通过的论点——它只使用<代码>的<的论点。