web-dev-qa-db-fra.com

Syntaxe pour une boucle for en ruby

Comment faire ce type de boucle for dans Ruby?

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

}
76
DNB5brims
array.each do |element|
  element.do_stuff
end

ou 

for element in array do
  element.do_stuff
end

Si vous avez besoin d'index, vous pouvez utiliser ceci:

array.each_with_index do |element,index|
  element.do_stuff(index)
end
109
Eimantas
limit = array.length;
for counter in 0..limit
 --- make some actions ---
end

l'autre façon de faire est la suivante

3.times do |n|
  puts n;
end

qui imprimera 0, 1, 2, pourrait donc être utilisé comme un itérateur de tableau également

Pense que cette variante correspond mieux aux besoins de l'auteur 

69
Ph0en1x

Je continue à utiliser ce lien en tant que lien principal pour Google "Ruby for loop", donc je voulais ajouter une solution pour les boucles dont l'étape n'était pas simplement "1". Dans ces cas, vous pouvez utiliser la méthode 'step' qui existe sur les objets Numérique et Date. Je pense que ceci est une approximation proche pour une boucle "pour".

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
27
dsz
array.each_index do |i|
  ...
end

Ce n'est pas très Rubyish, mais c'est la meilleure façon de faire la boucle de la question dans Ruby

15
EmFi

L'équivalence serait

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

ou

(0...array.size).each do |i|
end

ou 

i = 0
while i < array.size do
   array[i]
   i = i + 1 # where you may freely set i to any value
end
15
jsh-c

Pour itérer une boucle un nombre de fois déterminé, essayez:

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

Quoi? À partir de 2010 et personne n'a mentionné Ruby a une amende pour/in loop (personne ne l'utilise):

ar = [1,2,3,4,5,6]
for item in ar
  puts item
end
8
steenslag

Si vous n'avez pas besoin d'accéder à votre tableau, (une simple boucle for), vous pouvez utiliser jusqu'à jusqu'à ou chacun:

Jusqu'à:

1.9.3p392 :030 > 2.upto(4) {|i| puts i}
2
3
4
 => 2 

Chaque:

1.9.3p392 :031 > (2..4).each {|i| puts i}
2
3
4
 => 2..4 
8
Benjamin Crouzier
['foo', 'bar', 'baz'].each_with_index {|j, i| puts "#{i} #{j}"}
4
YOU

La syntaxe de la boucle d'énumération de Ruby est différente:

collection.each do |item|
...
end

Cela se lit comme "un appel à la méthode" each "de l'instance d'objet de tableau" collection "qui se bloque avec un argument" argument ". La syntaxe de bloc dans Ruby est "do ... end" ou "{...}" pour les instructions d'une ligne.

L'argument de blocage '| item |' est facultatif, mais s'il est fourni, le premier argument représente automatiquement l'élément énuméré en boucle.

0
believesInSanta