2012-02-09 27 views
1

我试图找到一种方法来终止用户点击'x'+ Enter时的循环。我希望循环只是在后台运行,直到用户取消它。输入端接循环

东西沿着这些路线:

while gets.chomp != 'x' 

    puts 'looping...' 

    sleep 1 

end 

我与编程初学者和搜查甚广为如何做到这一点,因此任何帮助,将深表赞赏。

+0

请参阅我的要点:https://gist.github.com/1759451。 – 2012-02-10 00:48:17

回答

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块,所以你不能这样做,同时别的东西,而不通过使用后台线程并行的程序,只检查用于输入。

+0

Merci beaucoup!我想我现在已经明白了! – catbat 2012-02-09 22:18:17

+0

@niklasb嗨!我一直在寻找解决这个问题的办法,到目前为止我只能找到非常相似的建议,但是其中没有包括你在内的那些对我有用。红宝石有什么变化吗?谢谢。 #rubyNewbie – 2016-03-27 04:03:43