ruby如何用用户输入停止循环?

时间:2018-05-14 19:02:46

标签: ruby

我是ruby的新手,我试图制作一个循环,每秒输出0到1之间的随机数,直到用户点击任意一个键。然后,输出生成的随机数的总数和生成的数的平均值。但是,我根本无法使循环停止,是否有类似中断来阻止红宝石中的循环?

def random
    ran = []
    puts "Press 1 and 'enter' to start and 2 to stop \n"
    s = gets.chomp
    ran << Random.rand(0.0...1.1)

    ran.each do|i| 
      ran << Random.rand(0.0...1.1)
      puts i
      sleep(1)
    end

    puts "The total number of random numbers generated is: #{ran.length}"

end
random

1 个答案:

答案 0 :(得分:1)

你真的不需要另一个线程。

numbers = []

puts 'Press ENTER to start'
puts 'Press Ctrl-C to stop'
gets

loop do
  numbers << rand
  sleep 1
rescue Interrupt
  puts
  printf "Count: %d\n", numbers.size
  printf "Mean: %f\n", numbers.sum / numbers.size

  exit
end

需要Ruby&gt; = 2.5