如果在2秒内未收到输入,我将尝试打印"Please input a value"
并引发Timeout::Error
。
我想我可以做:
puts "Please input a value"
Timeout.timeout(2) do
ans = gets
end
raise "aborted" unless ans == 'y'
当我运行脚本时,它会打印消息,然后就坐。如果我在10秒后输入一个值(例如(,那么它就会超时。直到我输入一个值之后,它才达到超时。
据我所知,您只想要y
答案,并且需要2秒钟的时间来回答。
您可以使用begin..rescue..end
结构,并循环until
进行y
应答
require 'timeout'
puts 'Input something'
begin
status = Timeout::timeout(2) { answer = gets.chomp.downcase until answer == 'y' }
rescue Timeout::Error
puts 'Time is out'
end
但在Windows中最好使用STDIN.gets
。你可以在这里阅读