如何在Ruby中执行此类for循环?
for(int i=0; i<array.length; i++) {
}
答案 0 :(得分:113)
array.each do |element|
element.do_stuff
end
或
for element in array do
element.do_stuff
end
如果您需要索引,可以使用:
array.each_with_index do |element,index|
element.do_stuff(index)
end
答案 1 :(得分:71)
limit = array.length;
for counter in 0..limit
--- make some actions ---
end
另一种方法是:
3.times do |n|
puts n;
end
那会打印0,1,2,所以可以像数组迭代器一样使用
认为该变体更符合作者的需求
答案 2 :(得分:28)
我一直认为这是google“ruby for loop”的顶级链接,所以我想为循环添加一个解决方案,其中步骤不仅仅是'1'。对于这些情况,您可以使用Numerics和Date对象上存在的“step”方法。我认为这是'for'循环的近似值。
start = Date.new(2013,06,30)
stop = Date.new(2011,06,30)
# step back in time over two years, one week at a time
start.step(stop, -7).each do |d|
puts d
end
答案 3 :(得分:15)
array.each_index do |i|
...
end
它不是非常Rubyish,但它是在Ruby中从问题中执行for循环的最佳方法
答案 4 :(得分:15)
等价是
for i in (0...array.size)
end
或
(0...array.size).each do |i|
end
或
i = 0
while i < array.size do
array[i]
i = i + 1 # where you may freely set i to any value
end
答案 5 :(得分:12)
要循环迭代一次,请尝试:
n.times do
#Something to be done n times
end
答案 6 :(得分:8)
什么?从2010年开始,没有人提到Ruby有一个很好的for / in循环(它只是没有人使用它):
ar = [1,2,3,4,5,6]
for item in ar
puts item
end
答案 7 :(得分:8)
如果你不需要访问你的数组,(只是一个简单的for循环)你可以使用upto或者每个:
<强>高达:强>
1.9.3p392 :030 > 2.upto(4) {|i| puts i}
2
3
4
=> 2
<强>每个强>
1.9.3p392 :031 > (2..4).each {|i| puts i}
2
3
4
=> 2..4
答案 8 :(得分:4)
['foo', 'bar', 'baz'].each_with_index {|j, i| puts "#{i} #{j}"}
答案 9 :(得分:0)
Ruby的枚举循环语法不同:
collection.each do |item|
...
end
这读作“对数组对象实例'集合'的'each'方法的调用,它以'blockargument'作为参数来阻塞”。对于单行语句,Ruby中的块语法是“do ... end”或“{...}”。
块参数'| item |'是可选的,但如果提供,则第一个参数自动表示循环枚举项。