「gets.chomp」コマンドを使用してユーザーの応答を待つループを実行しています。これをsleep/timerコマンドとどのように組み合わせることができますか?
例えば。ユーザーが単語を入力するまで1分間待機する必要があります。そうしないと、ループに戻ります。
Ruby のTimeout
.
ドキュメントから:
require 'timeout'
status = Timeout::timeout(5) {
# Something that should be interrupted if it takes too much time...
}
上記の Timeout メソッドは、おそらくこの問題を解決する最も洗練された方法だと思います。ほとんどの言語で利用できる別のソリューションは、 を使用することselect
です。監視するファイル記述子のリストと、オプションのタイムアウトを渡します。コードはそれほど簡潔ではありません。
ready_fds = select [ $stdin ], [], [], 10
puts ready_fds.first.first.gets unless ready_fds.nil?