终止输入循环

时间:2012-02-09 21:45:19

标签: ruby

当用户点击'x'+ Enter时,我正试图找到一种终止循环的方法。我希望循环只在后台继续运行,直到用户取消它。

这些方面的东西:

while gets.chomp != 'x'

    puts 'looping...'

    sleep 1

end

我是编程的初学者,并且已经广泛搜索了如何做到这一点,所以任何帮助都将深受赞赏。

1 个答案:

答案 0 :(得分:5)

你必须使用线程:

Thread.new do
  while line = STDIN.gets
    break if line.chomp == 'x'
  end
  exit
end

# whatever you want to do in the background
# (or rather in the foreground, actually)
loop do
  puts "foo"
  sleep 1
end

问题在于STDIN.gets阻塞,因此如果不使用仅检查输入的后台线程并行化程序,则无法同时执行其他操作。