array = [apple, orange]
number = 4
所需的输出:
apple
orange
apple
orange
到目前为止,我有:
array.each do |x|
puts x
end
我只是不确定如何遍历数组4次。
答案 0 :(得分:7)
array = ["apple", "orange"]
iter_count = 4
array.cycle.take(iter_count).each { |x|
puts x
}
array.cycle
为我们提供了一个无限的枚举,它重复了array
的元素。然后,我们从中获取第一个iter_count
元素并对其进行迭代。
Enumerable
有很多东西可以执行这样的简单任务。熟悉该模块后,您会发现可以更轻松地完成许多面向数组和流的过程。
答案 1 :(得分:4)
ar = ["apple", "orange"]
n = 4
n.times { ar.each{|a| p a} }
答案 2 :(得分:2)
array = ["apple", "orange"]
numOfIteration=4
for i in 0..numOfIteration-1
puts array[i%array.size]
end
答案 3 :(得分:1)
一种有趣的方式实现这一目标:
4.times { |n| p array[n % array.count] }
绝对不是最好的:每次迭代我们都在计算数组中元素的数量,并且还要处理n可除以元素数量的问题。它也不太可读,因为需要一些认知处理才能理解该语句。
一种更好的方法:
print(arr.cycle.take(4).join("\n"))
apple
orange
apple
orange
答案 4 :(得分:0)
另一个非惯用的for循环,三个点消除了显式减法的需要
array = ['apple', 'orange']
number = 4
for i in 0...number
puts array[i % array.size]
end
和一些带有lambda和递归的愚蠢行为:D
array = ['apple', 'orange']
number = 4
loop = lambda do |list, count|
return if count == number
puts list[count % list.size]
loop.(list, count + 1)
end
loop.(array, 0)