创建加载三个小点

Create the loading three little dots

你好,我怎样才能使三个点加载 (...),这样它就可以做类似这样的事情,除了每次都不换行:

正在加载

正在加载。

正在加载...

正在加载..

正在加载。

等等:

这是我想出来的,唯一的问题是,如果加载持续超过 1.5 秒,我无法一个一个地删除圆点。

puts "Sending"
sleep(0.5)
print "."
sleep(0.5)
print "."
sleep(0.5)
print "."

希望我够清楚了。

感谢您的帮助。

你可以试试 $stdout.flush:

def loading number_of
  number_of.times do |t|
    print "Sending#{'.' * (t % 4)}   \r"
    $stdout.flush
    sleep 0.5
  end
end

Demonstration

10.times do |i|   
    print "Sending." +  ("." * (i % 3)) + "  \r"    
    $stdout.flush   
    sleep(0.5)
end

那么,这是如何工作的?

10.times do |i|   

重复以下代码10次,变量i表示当前迭代(0,1,2,3,4...)

    print "Sending." +  ("." * (i % 3)) + "  \r"

打印短语 "Sending." 后跟几件事:

  • ("." * (i % 3)) 重复 ("multiplies") 字符串 "." 几次,特别是 i % 3,它是 i 除以 3 的余数.所以当i为7时,i % 3为1.
  • "\r" 将光标移回行首 而不会 换行。如果您想到打字机,它就像 return 将回车符(打字的位)打到行首,这样您就可以在同一行上再次打字。这是一辆马车return

    $stdout.flush
    

确保打印数据。

    sleep(0.5)

睡半秒