是否有一种更 Ruby-ish 和更清洁的方法来让数字在一个范围内运行。如果达到上限,则下一个数字应再次为 1。经常出现在算法中,例如将第 16 个月和第 28 个月强制为 4 月 (16-12=4)。
案例:我有十二张图片和 N 个问题。每个问题都会得到下一张图片,如果所有图片都“使用”过,它应该从图片 1 重新开始。
def image_rotation(number) {
uplim = 12
return number if number <= uplim
return image_rotation(number - uplim) if number > uplim
}
questions.each_with_index do |q,i|
img = File::join("images", "image-#{image_rotation(i+1)}.jpg")
end
注意:我不熟悉这种(某种)问题的术语,所以搜索 stackoverflow 并没有给我任何结果或提示;但我不敢相信这个问题不是重复的。请给我一个关键字,回答/重复或随意回答:)
以及单线的奖励积分。我需要在 ERB 文件中使用它,所以如果我可以保持代码干净、清晰和简单,那么我更愿意在那里完全解决它。