2014-12-10 52 views
5

Próbuję napisać program, który poprosi użytkownika o odpowiedź na pytanie za pomocą gets.chomp w ciągu trzech sekund lub odpowiedź automatycznie zwróci false.Jak timeout gets.chomp

Wymyśliłem wszystko z wyjątkiem części limitu czasu i zastanawiałem się, czy ktoś mógłby pomóc.

+1

Pokaż nam swój kod. – Cthulhu

+1

Zobacz [Timeout] (http://www.ruby-doc.org/stdlib-2.1.5/libdoc/timeout/rdoc/Timeout.html). –

Odpowiedz

-4

Napisałem kod do tego.

def question_time 
    puts "Your question here" 
    t = Time.now 
    answer = gets.chomp 
    Time.now - t > 3 ? false : answer 
end 
+0

Problem polega na tym, że 'dostaje' będzie blokować w nieskończoność, więc jeśli użytkownik nic nie robi, program nigdy się nie skończy. – Carpetsmoker

+0

Ta odpowiedź jest błędna. Polecam usunięcie go. Całkowicie lekceważy rdzeń pytania, a poza tym nie wiem, jak i kiedy ten kod powinien być przydatny. Pytanie dotyczy programu, który automatycznie zwraca wartość false, jeśli użytkownik nie odpowiedział w ciągu 3 sekund, ale ten kod będzie czekać (na zawsze), dopóki użytkownik nie poda danych wejściowych, ponieważ blokuje wykonanie polecenia 'gets'. –