每次要求输入之前如何打印?

时间:2013-10-09 05:16:27

标签: ruby stdin

我遇到了问题,因为我想要结合我从用户那里获得输入的两种方式。我想在用户开始输入之前打印“%”,但我也希望为每个可能的输入行执行此操作。

通常我会这样做

print "% "
input = gets.chomp

$stdin.each_line do |line|
   ...
end

但我不确定在读取循环的每一行之前如何打印。有简单的解决方案吗?

3 个答案:

答案 0 :(得分:0)

以下脚本要求您输入,直到您键入'42'it is an earth simulator by the way在每次输入之前打印一些内容。

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!"

这是你的想法吗?

答案 1 :(得分:0)

我们可以做到

begin
  print "%: "
  a = gets
  puts a
end (condition) 

input = "%" + gets.chomp   

答案 2 :(得分:0)

如果您使用的是编辑器,则可能正在管理缓冲区。这是一个常见问题。

您可以在文件程序的顶部设置STDOUT.sync = true,这可能是您的解决方案,或者您可以在获取声明之前直接使用STDOUT.fluxh

否则,从终端/控制台/ shell而不是IDE运行程序。