Ruby逐字逐句打印

时间:2014-09-20 07:58:04

标签: ruby

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”等。这可能吗?作为红宝石学习者,他们说你不能“干”。

谢谢!

3 个答案:

答案 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)

相关问题