我有这个:
(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
只影响第一次调用promptread
内部的make-cd
;其他的都是左对齐的,没有这个填充。为什么会这样?
回复:
CL-USER> (addcds)
Artist:Dixie
Album:Funny
Rating:22
第一个
promptread
缩进是因为format
与~10t
一起使用,而不是其他使用相同的精确format
调用。 最佳答案
问题是,在force-output
和readline
之后,光标不知道format
位于0位置因此,绝对列表将失败如果您用~&
开始格式化字符串,您将看到这是一个附加的换行符。
要解决此问题,请使用@
修饰符获取相对列表:
(format *query-io* "~10@t~a:" prompt)
关于lisp - 重复调用格式化会忽略〜t选项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19486540/