gpt4 book ai didi

ruby - 同时进度条

转载 作者:数据小太阳 更新时间:2023-10-29 08:03:26 25 4
gpt4 key购买 nike

这个脚本创建了一个伪进度条:

bar, bar2 = '', ''
10.times do |i|
bar << '='
bar2 << '**'
print "#{bar} - #{i+1}0%\r"
#print "#{bar2} - #{i+1}0%\r"
sleep 0.3
end

10 = 在完成之前出现在屏幕的左下方。

我想同时创建两个加载栏。如您所见,我创建了 bar2,它在完成之前创建了 20 个 *

两者都工作正常,但不是同时!如果我取消注释两个打印命令,我打印两个条,只显示 bar2bar1 根本没有出现。

我猜这是因为 \r 将“光标”返回到行的开头并用 bar2 覆盖了 bar的进步。

我试过使用 \n,但 \n 之前的所有文本都没有被删除。同样,这是因为 \r 是不能在换行之前的回车符,所以虽然第一个循环实际上运行良好,但 bar 的进度(和\n) 停留在屏幕上,造成这种效果:

> = - 10%
> == - 20%
> === - 30%%
> ==== - 40%0%
> ===== - 50%40%
> ====== - 60% 50%
> ======= - 70%- 60%
> ======== - 80% - 70%
> ========= - 90%* - 80%
> ========== - 100%* - 90%

那么如何创建两个同时加载栏?或者实际上是无限数量的同时加载条?我正在 gnome-terminal 中进行测试,但我想要一个适用于大多数(如果不是全部)现代终端的解决方案。

最佳答案

这是一个很酷的小问题。基本上,您做对了,您可以用 \r 覆盖当前行。现在你只需要一个字符,它可以跳回到上一行。您可以为此使用 "\033[F":

bar, bar2 = '', ''
10.times do |i|
bar << '='
bar2 << '**'
puts "#{bar} - #{i+1}0%"
print "#{bar2} - #{i+1}0%"
print "\033[F\r"
sleep 0.3
end

关于ruby - 同时进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32850849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com