get内的Ruby超时



如果在2秒内未收到输入,我将尝试打印"Please input a value"并引发Timeout::Error

我想我可以做:

puts "Please input a value"
Timeout.timeout(2) do
ans = gets
end
raise "aborted" unless ans == 'y'

当我运行脚本时,它会打印消息,然后就坐。如果我在10秒后输入一个值(例如(,那么它就会超时。直到我输入一个值之后,它才达到超时。

据我所知,您只想要y答案,并且需要2秒钟的时间来回答。

您可以使用begin..rescue..end结构,并循环until进行y应答

require 'timeout'
puts 'Input something'
begin
status = Timeout::timeout(2) { answer = gets.chomp.downcase until answer == 'y' }
rescue Timeout::Error
puts 'Time is out'
end

但在Windows中最好使用STDIN.gets。你可以在这里阅读

相关内容

  • 没有找到相关文章

最新更新