我创建了一个命令行工具,它可以执行一些长操作,我想通过print语句通知用户,例如:
"10% Done"
"20% Done"
操作的百分比。如果我使用println,每个进度都会被打印成一个新的行(显然),但是有一种方法可以用swift来替换最后一个打印的文本,所以在控制台上你只能读取实际的百分比,不是实际和之前印刷的那些?
答案 0 :(得分:3)
如果输出到终端,那么你可以使用这个事实
\r
(回车)将“光标”移动到当前的开头
线,没有前进到下一行:
print("10% done \r")
print("20% done \r")
print("100% done\n")
(但请注意,这在Xcode调试器控制台中不起作用。)
答案 1 :(得分:3)
这样的东西适用于终端控制台:
import Foundation
for i in 1...10 {
print("\(i) \r", terminator: "")
fflush(stdout)
sleep(1)
}
答案 2 :(得分:0)
不,不可能。 Swift无法访问已打印出的字符串。但您可以创建一个显示进度的进度条。例如:
|========= | 40%
但是,在您将日志打印出来之后,您无法更改日志的输出。