如果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秒后输入一个值(例如),则该值超时。在输入值之前,它不会超时。
答案 0 :(得分:0)
据我了解,您只想要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
。您可以阅读有关此here