0

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

通常我会做

print "% "
input = gets.chomp

或者

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

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

4

3 回答 3

0

以下脚本要求您输入,直到您输入“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!"

这就是你的想法吗?

于 2013-10-09T05:53:46.267 回答
0

我们能做的

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

或者

input = "%" + gets.chomp   
于 2013-10-09T06:03:33.093 回答
0

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

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

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

于 2013-10-09T06:58:16.853 回答