我遇到了问题,因为我想结合我知道的从用户那里获取输入的两种方式。我想在用户开始输入之前打印“%”,但我也想为每一个可能的输入行执行此操作。
通常我会做
print "% "
input = gets.chomp
或者
$stdin.each_line do |line|
...
end
但我不确定在读取循环的每一行之前如何打印。有简单的解决方案吗?
以下脚本要求您输入,直到您输入“42” (顺便说一句,它是一个地球模拟器)在每次输入之前都会打印一些内容。
loop do
print "Think of a question and give me its answer: "
a = gets
break if a.chomp == "42"
end
puts "You have found a possible question!"
这就是你的想法吗?
我们能做的
begin
print "%: "
a = gets
puts a
end (condition)
或者
input = "%" + gets.chomp
如果您使用的是编辑器,它可能正在管理缓冲区。这是一个常见的问题。
您可以STDOUT.sync = true
在文件程序的顶部设置,这可能是您的解决方案,或者您可以STDOUT.fluxh
直接在gets语句之前使用。
否则,请从终端/控制台/shell 而不是 IDE 运行您的程序。