이 질문은 아마도 얼굴 표정으로 끝날 것이지만 나는 잠시 동안 시험을 보았고 hyperspec을 읽었음에도 불구하고 여전히 붙어 있습니다.형식 - 표 인쇄에 대한 도움말
기본적으로 내가하고 싶은
(format t "~{|~{ ~5d~}|~%~}" '((1 23 2 312) (23 456 1 7890)))
같은 대신의 하드 코딩이 목록에서 계산해야 5 (중첩 된 목록 + 1에서 가장 긴 요소의 길이) 줄 뭔가 같은
| 1 23 2 312|
| 23 456 1 7890|
어쩌면 내가 여기 너무 복잡하게 생각하고 내가 원하는 것을 할 수있는 쉬운 방법이 있습니다,하지만 난 내가 나갈 수없는 정신 구석으로 자신을 달렸다 생각합니다. format
마법은 형식 문자열 자체를 가서 다른 반복 구조를 사용하거나 생성 할 수 있습니다 : longest-member
의 정의는 독자에게 연습 문제로 남겨
(defun facepalm-printer (lol)
(format t (format nil "~~{|~~{ ~~~ad~~}|~~%~~}"
(longest-member lol))
lol))
당신이 원하는대로 할 수있는'~'컨트롤이 있을지 모르지만, 나는 2 단계로 이것을 할 것입니다. 가장 넓은 요소를 계산 한 다음 그것을 사용하여 포맷 문자열 (형식으로!)을 만든 다음 호출합니다 형식으로 테이블을 작성하십시오. 그래서 이것은 1 라인 함수 대신 3 라인 함수입니다. :-) – Ken