我正在嘗試編寫一個程序,要求用戶在三秒內使用gets.chomp
來回答問題,否則答案將自動返回false。如何超時gets.chomp
我想出除了超時部分以外的所有東西,我想知道是否有人可以請求幫助。
我正在嘗試編寫一個程序,要求用戶在三秒內使用gets.chomp
來回答問題,否則答案將自動返回false。如何超時gets.chomp
我想出除了超時部分以外的所有東西,我想知道是否有人可以請求幫助。
可以使用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
謝謝!這工作完美。 – pmckinney 2014-12-12 13:09:41
我爲此寫了一些代碼。
def question_time
puts "Your question here"
t = Time.now
answer = gets.chomp
Time.now - t > 3 ? false : answer
end
問題是'gets'將無限期阻塞,所以如果用戶什麼都不做,程序將永遠不會結束。 – Carpetsmoker 2014-12-12 11:39:32
這個答案是錯誤的。我建議刪除它。它完全忽略了問題的核心,除此之外,我不知道如何以及何時該代碼應該有用。 如果用戶在3秒內沒有應答,程序會自動返回false,但此代碼將等待(永遠),直到用戶給出輸入爲止,因爲'gets'會阻止執行。 – 2016-01-07 14:37:24
我們展示你的代碼。 – Cthulhu 2014-12-10 23:36:47
看看[Timeout](http://www.ruby-doc.org/stdlib-2.1.5/libdoc/timeout/rdoc/Timeout.html)。 – 2014-12-10 23:39:07