创建重复序列a la的最简单方法是什么:['a','b'] [2] ='a'

时间:2010-01-20 20:41:15

标签: ruby

我发现自己想知道是否有一个内置的Ruby方法来获取12个元素序列中的第n个数字,无论'n'有多大。

例如,如果我有一个序列(下面描述为一个数组),它有3个元素,如果我尝试访问第四个元素,它从头开始。这是一个可以做到这一点的方法,但我想知道是否有内置的方法来做到这一点。

Array.class_eval do
  def sequenced(n)
    n/size >= 1 ? fetch(n%size) : fetch(n)
  end
end

['a', 'b', 'c'].sequenced(3) => 'a'

2 个答案:

答案 0 :(得分:3)

为什么你需要特殊情况n<尺寸案例?只需使用fetch(n%size)

即可

答案 1 :(得分:1)

在Ruby 1.9中:

['a', 'b', 'c'].cycle.take(size).last