下一个元素是(当前+ 1)或0(红宝石)

时间:2010-04-11 11:45:59

标签: ruby

我有一个间隔让我们说(0..3)其中下一个元素是+1,除非是最后一个。然后下一个是0.我通过下面的代码解决了它。只是想知道是否还有其他事情: - )

def next(max,current)

if current+1 == max
  return 0
else
  return current+1
end  
end

修改

请注意,当代码运行时,我需要能够在我的示例0..3中随时分配任何“有效数字”。

2 个答案:

答案 0 :(得分:6)

Ruby 1.8.7具有可枚举#cycle

(0..3).cycle{|x| puts x}

将永远循环。

我觉得这很酷:

looper = (0..3).cycle
20.times { puts looper.next }

答案 1 :(得分:3)

怎么样:

def next(max,current)
(current+1) % max
end

除非max==0,否则应该有效,但你可以很容易地抓住并保释。 :)

快乐的编码!

编辑:您还应该知道next是保留的关键字(请参阅this overview),为您的方法选择其他名称是明智的。