ruby中for循环的语法

时间:2010-01-09 09:01:10

标签: ruby syntax

如何在Ruby中执行此类for循环?

for(int i=0; i<array.length; i++) {

}

10 个答案:

答案 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 |'是可选的,但如果提供,则第一个参数自动表示循环枚举项。