1

所以,我有一个 ruby​​ 循环,我如何在其中每 50 次迭代打印一条消息,如下所示:

loop do
  do something
  break if something happend
  puts "Message at every 50 iteration"
end
4

3 回答 3

6

保留一个计数变量,每次它可以被 50 整除时做一些事情。

i = 0;

loop do
  i += 1

  if i % 50 == 0
    puts "This prints every 50 iterations"
  end
end
于 2013-04-25T00:48:13.447 回答
4

Donald Knuth(可能不在 Ruby 中)会使用倒数索引而不是递增索引。这使检查更容易。正如 sigmavirus24 指出的那样,它还避免了整数溢出的问题。

i = 50
loop do
  # do something
  break if something happend # (as in original)
  i -= 1
  next unless i.zero?
  i = 50
  puts "Message at every 50 iteration"
end
于 2013-04-25T05:34:29.013 回答
0

考虑到您的情况,c我认为最干净的方法是使用while循环(或unless取决于条件):

while c do
    i = (i) ? i + 1 : 1
    puts "This prints every 50 iterations" if (i % 50 == 0)
end
于 2013-04-25T02:15:56.010 回答