我有一个包含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之间的数字
有一种方法可以无条件地做到这一点吗?
答案 0 :(得分:0)
你自己几乎有解决方案。不要使用简单的模数,请尝试:
index = (number % 12) + 1
编辑:njzk2是正确的,如果你使用的值不是2的幂,modulo是一个非常昂贵的函数。但是,如果您的元素总数(您使用的模数)是2的幂,则计算基本上是免费的。