我正在尝试编写一个程序,它将要求用户使用gets.chomp在三秒钟内回答一个问题,否则答案将自动返回false。
除了超时部分,我什么都想出来了,我想知道是否有人能帮忙。
发布于 2014-12-11 00:28:17
您可以使用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")阅读更多关于库http://www.ruby-doc.org/stdlib-2.1.5/libdoc/timeout/rdoc/Timeout.html的信息
发布于 2019-03-28 11:18:17
您可以使用Kernel::select编写助手方法,如下所示:
def gets_with_timeout(sec, timeout_val = nil)
return gets.chomp if select([$stdin], nil, nil, sec)
timeout_val
end然后你可以像这样使用它:
puts "How are you?"
ans = gets_with_timeout(5)
puts ans || "User did not respond"发布于 2014-12-11 00:12:36
我为此写了一些代码。
def question_time
puts "Your question here"
t = Time.now
answer = gets.chomp
Time.now - t > 3 ? false : answer
endhttps://stackoverflow.com/questions/27412804
复制相似问题