我试图找到一种方法来终止用户点击'x'+ Enter时的循环。我希望循环只是在后台运行,直到用户取消它。输入端接循环
东西沿着这些路线:
while gets.chomp != 'x'
puts 'looping...'
sleep 1
end
我与编程初学者和搜查甚广为如何做到这一点,因此任何帮助,将深表赞赏。
我试图找到一种方法来终止用户点击'x'+ Enter时的循环。我希望循环只是在后台运行,直到用户取消它。输入端接循环
东西沿着这些路线:
while gets.chomp != 'x'
puts 'looping...'
sleep 1
end
我与编程初学者和搜查甚广为如何做到这一点,因此任何帮助,将深表赞赏。
你必须使用线程这样的:
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
块,所以你不能这样做,同时别的东西,而不通过使用后台线程并行的程序,只检查用于输入。
Merci beaucoup!我想我现在已经明白了! – catbat 2012-02-09 22:18:17
@niklasb嗨!我一直在寻找解决这个问题的办法,到目前为止我只能找到非常相似的建议,但是其中没有包括你在内的那些对我有用。红宝石有什么变化吗?谢谢。 #rubyNewbie – 2016-03-27 04:03:43
请参阅我的要点:https://gist.github.com/1759451。 – 2012-02-10 00:48:17