我不想使用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
我该怎么做?
答案 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
。因此,我们只需在or
和collect
之间设置next
运算符,以便next
的结果为collect
时发生nil
。
答案 1 :(得分:2)
count = (0..9).count { |i| (i..20).all?{ |j| j < rand(30) } }