列表格式的抑扬符

问题描述 投票:0回答:1

这有效:

(format nil "~{~a~^,~}" '(1 2 3))  ; => "1,2,3"
(format nil "~{~a=~a~^,~}" '(a 1 b 2 c 3)) ; => "A=1,B=2,C=3"

但在这个例子中,抑扬符抑制了一切:

(format nil "~:{~a=~a~^,~}" '((a 1) (b 2) (c 3))) ; => "A=1B=2C=3"

为什么以及如何解决它?

common-lisp sbcl
1个回答
0
投票

您需要嵌套迭代,以便内部迭代处理参数,外部迭代处理参数列表。然后可以转义外部迭代以抑制打印最后的逗号:

* (format nil "~{~{~A=~A~}~^, ~}" '((a 1) (b 2) (c 3)))
"A=1, B=2, C=3"
© www.soinside.com 2019 - 2024. All rights reserved.