将变量倒回1的最佳方法?

时间:2013-08-22 11:47:08

标签: ruby ruby-2.0

我有一个包含12个条目的数组。

执行12+1时,我想获取数组的条目1

执行12+4时,我想获取数组的条目4

等...

我完成了

cases_to_increment.each do |k|
  if k > 12
    k = k-12
  end

  self.inc(:"case#{k}", 1)
end

我找到了一个模数

的解决方案
k = 13%12 = 1
k = 16%12 = 4

我喜欢模数方式,但12%12返回0,我只需要1..12之间的数字

有一种方法可以无条件地做到这一点吗?

1 个答案:

答案 0 :(得分:0)

你自己几乎有解决方案。不要使用简单的模数,请尝试:

index = (number % 12) + 1

编辑:njzk2是正确的,如果你使用的值不是2的幂,modulo是一个非常昂贵的函数。但是,如果您的元素总数(您使用的模数)是2的幂,则计算基本上是免费的。