这个问题可能会以打脸告终,但我已经尝试了一段时间,尽管通读了 hyperspec,但仍然卡住了。
基本上我想做的是
(format t "~{|~{ ~5d~}|~%~}" '((1 23 2 312) (23 456 1 7890)))
但与其对 5 进行硬编码,不如从列表中计算它(任何嵌套列表中最长元素的长度 + 1)以给出类似于
| 1 23 2 312|
| 23 456 1 7890|
也许我在这里想的太复杂了,有一种更简单的方法可以做我想做的事,但我认为我陷入了无法摆脱的精神困境。
最佳答案
我认为您有两个选择:让 format
魔法发挥作用并使用其他循环结构或自行生成格式字符串:
(defun facepalm-printer (lol)
(format t (format nil "~~{|~~{ ~~~ad~~}|~~%~~}"
(longest-member lol))
lol))
longest-member
的定义留给读者作为练习。
关于lisp - format - 帮助打印表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4618503/