在实例变量迭代时初始化实例变量



假设我们在控制器中有一个循环,它会遍历一个数字数组,检查它们是偶数还是奇数:

[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

最新更新