假设我们在控制器中有一个循环,它会遍历一个数字数组,检查它们是偶数还是奇数:
[1,2,3,4,5].each do |number|
if number.odd?
@odd_count += 1
else
@even_count += 1
end
end
我的问题是,如果有一种方法来做这个数组没有以前设置@odd_count和@even_count变量?如果在控制器中执行前面的代码块,将得到
undefined method `+' for nil:NilClass
但是我真的不想做
@odd_count = 0
@even_count = 0
在循环之前,因为它是额外的代码行,看起来不太好。为了方便起见,假设我们有10个不同的东西要计数,而不是2个。
@odd_count = (@odd_count || 0) + 1
好的,如果我理解正确的话,替换为:
@odd_count += 1
:
@odd_count = @odd_count.to_i.next
a = [0,1,2,3,4,5,6,7,8,9,10]
odd = a.select {|n| n % 2 != 0}.inject(0) {|acc, n| acc + 1}
even = a.length - odd