我有这个:
(defun promptread (prompt)
(format *query-io* "~10t~a:" prompt)
(force-output *query-io*)
(read-line *query-io*))
(defun prompt-cd ()
(make-cd
(promptread "Artist")
(promptread "Album")
(promptread "Rating")
(promptread "Like [y/n]")))但是,~10t格式只会影响make-cd内部对promptread的第一次调用;其他调用在没有此填充的情况下左对齐。
为什么会这样?
REPL:
CL-USER> (addcds)
Artist:Dixie
Album:Funny
Rating:22第一个promptread是缩进的,因为format使用的是~10t,而不是其他的,后者使用的是相同的format调用。
发布于 2013-10-21 06:09:38
问题是,在force-output和readline之后,format不知道光标位于0位置。因此,绝对制表将失败。如果您使用~&启动格式字符串,您将看到这将作为一个额外的换行符无论如何输出。
要解决这个问题,请使用@修饰符获得相关的表格:
(format *query-io* "~10@t~a:" prompt)https://stackoverflow.com/questions/19486540
复制相似问题