array = [apple, orange]
number = 4
期望输出:
apple
orange
apple
orange
到目前为止,我已经:
array.each do |x|
puts x
end
我不确定如何对数组进行四次迭代。
array = ["apple", "orange"]
iter_count = 4
array.cycle.take(iter_count).each { |x|
puts x
}
array.cycle
会返回一个无限的可枚举对象,其中重复了array
中的元素。然后我们从中取出前iter_count
个元素并进行迭代。
Enumerable
有很多好用的功能,可以执行像这样的有趣任务。一旦熟悉了该模块,您将发现可以更轻松地执行许多面向数组和流的处理。ar = ["apple", "orange"]
n = 4
n.times { ar.each{|a| p a} }
4.times { puts array }
。 - Sagar Pandyaarray = ["apple", "orange"]
numOfIteration=4
for i in 0..numOfIteration-1
puts array[i%array.size]
end
for
循环,我们还使用 snake_case 命名变量。所以在你的情况下应该是 num_of_iterations
。尽管如此,这段代码确实可以工作并且是一个有效的答案 :) - Sagar Pandya4.times { |n| p array[n % array.count] }
绝对不是最好的方法:每次迭代我们都要计算数组中元素的数量,并且还要处理n是否可被元素数量整除。而且这种写法也不太易读,需要一些认知处理才能理解语句。
更好的实现方式:
print(arr.cycle.take(4).join("\n"))
apple
orange
apple
orange
puts arr.cycle.take(4)
产生相同的输出。 - steenslagarray = ['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)
times
方法时,它似乎过于复杂。还有几点需要注意:1)您提到了numOfIteration
,但在您的代码片段中找不到它。2)array.cycle
返回一个枚举器实例。 - Sagar Pandya