当用户点击'x'+ Enter时,我正试图找到一种终止循环的方法。我希望循环只在后台继续运行,直到用户取消它。
这些方面的东西:
while gets.chomp != 'x'
puts 'looping...'
sleep 1
end
我是编程的初学者,并且已经广泛搜索了如何做到这一点,所以任何帮助都将深受赞赏。
答案 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
阻塞,因此如果不使用仅检查输入的后台线程并行化程序,则无法同时执行其他操作。