para = "do ray me fa so la te do."
para.gsub!(' ', "#{sleep(2)}")
$stdout.sync = true
我希望在同一行上打印出来:(请执行此操作)。下面显示了列,因为“#”将整行显示为灰色。
print para
do#sleep(2)
ray#sleep(2)
me#sleep(2)
fa#sleep(2)
so#sleep(2)
la#sleep(2)
te#sleep(2)
do#sleep(2)
首先,当我调用puts时,首先出现“do”,然后暂停一下,然后在同一行显示“ray”等。这可能吗?作为红宝石学习者,他们说你不能“干”。
谢谢!
答案 0 :(得分:1)
我会这样做:
$stdout.sync = true
paragraph = "do ray me fa so la te do."
paragraph.split.each do |word|
print "#{word} "
sleep 2
end
答案 1 :(得分:0)
你正在做的是用另一个字符串替换一个字符串,其中包含一些ruby代码,但由于它将被转义,所以它永远不会被执行。
为了达到你想要的效果,我建议尝试这种方法:
"a b c d e f g".split(' ').each do |s|
puts s
sleep(1)
end
所以对于你想要的每一个字符串。
答案 2 :(得分:0)
这就是出错:
para.gsub!(' ', "#{sleep(2)}")
这会执行睡眠2,它在两秒钟内什么也不做,只返回2.这只是一种缓慢的做法para.gsub!(' ', 2)