可枚举#循环如何工作? (红宝石)

时间:2010-04-13 21:32:45

标签: ruby enumerable

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

我可以以某种方式找到3的下一个吗?我的意思是,如果我可以在任何给定时间获得.next任何特定元素。不只是以第一个元素开头的显示循环。

更新

当然我在发布问题之前通过了ruby doc。但我没有在那里找到答案......

UPDATE2

输入

looper = (0..max_cycle).cycle

max_cycle =每次运行脚本时可能不同的变量

looper =始终来自interval(0..max_cycle)的变量,但脚本启动时的当前值可以是any。它基于Time.now.hour

输出

我希望在脚本运行期间的任何时候知道.next looper的值

2 个答案:

答案 0 :(得分:4)

你的问题不是很清楚。也许你想要这样的东西?

(current_value + 1) % (max_cycle + 1)

例如,如果max_cycle = 3您将获得以下输出:

current_value    returns
      0             1
      1             2
      2             3
      3             0

答案 1 :(得分:2)