ruby中for循环的语法

ruby中for循环的语法,ruby,syntax,Ruby,Syntax,如何在Ruby中实现这种类型的for循环 for(int i=0; i<array.length; i++) { } for(int i=0;i 或 如果需要索引,可以使用以下方法: array.each_with_index do |element,index| element.do_stuff(index) end 这不是很rubysh,但这是在Ruby中执行for循环的最佳方法 limit = array.length; for counter in 0..limit -

如何在Ruby中实现这种类型的for循环

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

}
for(int i=0;i
或

如果需要索引,可以使用以下方法:

array.each_with_index do |element,index|
  element.do_stuff(index)
end
这不是很rubysh,但这是在Ruby中执行for循环的最佳方法

limit = array.length;
for counter in 0..limit
 --- make some actions ---
end

另一种方法是:

3.times do |n|
  puts n;
end
这将打印0、1、2,因此也可以像数组迭代器一样使用


认为该变体更适合作者的需要

什么?从2010年开始,没有人提到Ruby有一个良好的for/in循环(只是没有人使用它):


如果您不需要访问阵列(只是一个简单的for循环),您可以使用或分别使用:

最多:

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 
每个:

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 

我一直在点击这个作为google“ruby for loop”的顶部链接,所以我想添加一个针对循环的解决方案,其中步骤不仅仅是“1”。对于这些情况,您可以使用存在于数字和日期对象上的“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

要将循环迭代固定次数,请尝试:

n.times do
  #Something to be done n times
end

Ruby的枚举循环语法不同:

collection.each do |item|
...
end
这读作“对数组对象实例“collection”的“each”方法的调用,该方法将带有“blockargument”的块作为参数。Ruby中的块语法对于单行语句是“do…end”或“{…}”


块参数“|item |”是可选的,但如果提供,第一个参数将自动表示循环枚举项。

等效性为

for i in (0...array.size)
end

i=0
而我
这真是太棒了。答案确实不是
每一个
,而是
每一个索引
+1@johannes阅读一本书是一个好主意,但最好不是关于Ruby 1.6的书!别忘了看一看中的一些有用方法。每个…做的一个优点是,块临时在循环结束时超出范围,而对于…in,它的作用域是暂时的。我专门寻找循环中的索引,这些解决方案中没有一个能立即说明如何做到这一点。op在代码中的array.length背叛了他的意图…请仔细阅读我的答案。有一个包含索引的循环解决方案。通常情况下,
每个
都很好。但是有时候我只想要一个该死的传统for循环。有时候“Ruby方式”可能很烦人。我如何用Ruby手动设置索引以便自己编写排序?如果我想跳过下两次迭代呢
n.times do
  #Something to be done n times
end
collection.each do |item|
...
end
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