措辞不好的问题我知道,如果有人可以建议改写,那么我很乐意改变。
我想解释的是这个...... 让我们说你经历了10次迭代,但数组只包含5个条目。在第6次迭代中,您需要一个具有完整值的新数组。你是怎么做到的?
array = [1,2,3,4,5]
10.times do
foo = Foo.new
foo.bar = array.pop
end
我确信这很简单。
School::YEARS = [2009, 2010, 2011, 2012, 2012]
@array = School::YEARS #this contains five elements
10.times do |x|
classroom = School.new
classroom.year = @array.pop
end
=>2009, 2010, 2011, 2012, 2012, 2009, 2010, 2011, 2012, 2012
所以这里我想要一个包含与迭代开始之前相同的五个元素的新数组。
答案 0 :(得分:1)
这会做你想要的吗?
array = [1, 2, 3, 4, 5]
array.cycle.first(10).each do |x|
puts x
end
这应输出以下数字:1,2,3,4,5,1,2,3,4,5。
答案 1 :(得分:1)
正如@DavidGrayson建议的那样,考虑使用Ruby Array#cycle
method。但是,根据您的需要,您可能希望直接使用Enumerator
object:
years = [2009, 2010, 2011, 2012, 2012]
repeated_years = years.cycle.each
10.times do
classroom = School.new
classroom.year = repeated_years.next
end
[编辑] 或者,如果您只想根据源数组中重复值的十个值数组,则可以使用cycle
方法,如下所示:
years = [2009, 2010, 2011, 2012, 2012]
repeated_years = years.cycle(2).to_a
repeated_years # => [2009, 2010, 2011, 2012, 2012, 2009, 2010, 2011, 2012, 2012]