【发布时间】:2012-10-16 02:33:04
【问题描述】:
我有兴趣在 Common Lisp 中实现“单行”计数器/进度条。没什么特别的,就像:
=>
==>
===> ……等等……
然后让它重新开始。或者数一数我访问过的节点数。
但是,我想在一行上完成所有这些,并清除以前打印的字符。例如,在 Python 中,它会是这样的:
for i in range(0,1000):
print "\r",i," "
然后计算,但将所有内容保留在一行中,同时在任何给定迭代之前清除该行上打印的所有内容。
我知道在 lisp 中有 (format t "text" #\return),但这似乎不起作用。
有人知道我该怎么做吗? (我环顾四周,似乎找不到任何东西)。
谢谢,
安德鲁
编辑:
我找到了解决方案。您需要为要处理的#\return 添加一个指令(通用的“~A”有效):
(loop for i from 0 to 50000 do
(format t "~A~A " #\return i))
这将数到 50,000,您可以观看它执行此操作。因此,它适用于您可能希望重用单个输出行的任何其他情况。
【问题讨论】:
-
@wvxvw:我认为他想打印回车,而不是换行。
-
@andrewm921 请发布您的答案,接受它并指定您正在使用的 lisp 实现和平台。
标签: lisp format progress-bar common-lisp