Bu soru muhtemelen bir facepalm ile bitecek, ama bir süredir denedim ve hala hiperspec okumaya rağmen sıkışıp kaldım.biçimi - Bir tablo yazdırma ile yardım
Temelde ne yapmak istediğinizi
(format t "~{|~{ ~5d~}|~%~}" '((1 23 2 312) (23 456 1 7890)))
gibi bir şey ama yerine sabit kodlama listeden hesaplanmalıdır 5 (herhangi bir iç içe listeden + 1'den en uzun elemanın uzunluğu) vermek üzere bir şeydir gibi
| 1 23 2 312|
| 23 456 1 7890|
Belki burada yol çok karmaşık düşünüyorum ve istediğim şeyi yapmak için daha kolay bir yolu yoktur, ama ben dışarı alamayan bir zihinsel köşeye kendimi koştum düşünüyorum. format
sihirli biçimi dize kendisini gidip diğer döngüleri kullanabilir veya oluşturmasına izin: longest-member
tanımı okuyucuya bir alıştırma olarak bırakılmıştır
(defun facepalm-printer (lol)
(format t (format nil "~~{|~~{ ~~~ad~~}|~~%~~}"
(longest-member lol))
lol))
İstediğinizi yapmak için bir '~' kontrol olabilir, ancak bunu 2 adımda yapabilirim: en geniş elemanı hesaplayın, ardından bunu kullanarak bir biçim dizesi (biçim!) Oluşturun, ardından arayın tabloyu oluşturmak için format. Yani, 1 satırlı bir işlev yerine 3 satırlı bir işlev. :-) – Ken