如何超时gets.chomp

pmc*_*ney 5 ruby gets

我正在尝试编写一个程序,要求用户gets.chomp在三秒钟内回答问题,否则答案将自动返回false.

我想出除了超时部分以外的一切,我想知道是否有人可以请求帮助.

fyq*_*h95 9

您可以使用timeout标准库

require "timeout"

puts "How are you?"
begin
  Timeout::timeout 5 do
    ans = gets.chomp
  end
rescue Timeout::Error
  ans = nil
end
puts (ans || "User did not respond")
Run Code Online (Sandbox Code Playgroud)

阅读有关该库的更多信息http://www.ruby-doc.org/stdlib-2.1.5/libdoc/timeout/rdoc/Timeout.html