我正在尝试实施一个简单的“按任意键继续”。我将此消息打印到控制台,我想在按下一个键后将其擦除。
在“Writing over previously output lines in the command prompt with ruby”之后,我尝试了这段代码:
def continue
print "Press any key to continue\r"
gets
end
puts "An awesome story begins..."
continue
puts "And ends after 2 lines"
然而,\r
技巧不起作用,下一个puts
不会删除句子。是因为不同的功能背景吗? gets
会产生换行符吗?或者因为我在Windows操作系统上?
答案 0 :(得分:16)
您可以使用IO类中的STDIN,而不是gets
。
require 'io/console'
def continue_story
print "press any key"
STDIN.getch
print " \r" # extra space to overwrite in case next sentence is short
end
puts "An awesome story begins..."
continue_story
puts "And ends after 2 lines"
这有额外的好处,它只需要输入一个字符(getch
- 获得字符),允许“按任意键”无需返回或输入即可工作。