在Ruby中,如何将sleep与gets结合起来?我想等待用户响应1分钟,否则继续

RSD*_*RSD 5 ruby sleep gets timer

我正在运行一个循环,我在其中使用"gets.chomp"命令等待用户响应.如何将其与睡眠/计时器命令结合使用?

例如.我希望它等待1分钟让用户输入一个单词,否则它将继续返回循环.

the*_*Man 5

你应该看看Ruby的Timeout.

来自文档:

require 'timeout'
status = Timeout::timeout(5) {
  # Something that should be interrupted if it takes too much time...
}
Run Code Online (Sandbox Code Playgroud)


cam*_*cam 1

我认为上面的 Timeout 方法可能是解决这个问题的最优雅的方法。大多数语言中可用的另一种解决方案是使用select. 您传递要监视的文件描述符列表和可选的超时。代码不太简洁:

ready_fds = select [ $stdin ], [], [], 10
puts ready_fds.first.first.gets unless ready_fds.nil?
Run Code Online (Sandbox Code Playgroud)