如何在ruby中打破内循环和下一个外循环?

时间:2013-12-17 07:33:28

标签: ruby loops break

我不想使用if声明。

count = 0 
10.times do |i|
  all = (i..20).collect{ |ii| ii < rand(30) || break }
  count+=1 if all # i dont want to use `if` statement 
end

p count

我该怎么做?

2 个答案:

答案 0 :(得分:3)

我在类似的事情上得到了一些东西:

count = 0 
10.times do |i|
   (i..20).collect{ |ii| ii < rand(30) || break } || next
   count += 1
end

所以它只是布尔代数。当if(即all方法的结果)不是collect时,会发生nil条件,因此我们需要next关键字有效, collect的{​​{1}}是nil。因此,我们只需在orcollect之间设置next运算符,以便next的结果为collect时发生nil

答案 1 :(得分:2)

count = (0..9).count { |i| (i..20).all?{ |j| j < rand(30) } }