89 votes

Syntaxe d'une boucle for en ruby

Comment faire ce type de boucle for en Ruby ?

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

}

0 votes

@johannes Lire un livre est une bonne idée, mais de préférence pas un livre sur Ruby 1.6 !

0 votes

N'oubliez pas de jeter un coup d'œil à certaines méthodes utiles dans le site Web de l'UE. ruby-doc : Module énumérable .

118voto

Eimantas Points 29052
array.each do |element|
  element.do_stuff
end

ou

for element in array do
  element.do_stuff
end

Si vous avez besoin d'un indice, vous pouvez utiliser ceci :

array.each_with_index do |element,index|
  element.do_stuff(index)
end

15 votes

Je cherchais spécifiquement l'indexation dans une boucle, aucune de ces solutions ne rend immédiatement évident comment le faire. l'op a trahi ses intentions avec array.length dans le code...

6 votes

Lisez attentivement ma réponse. Il y a une solution de bouclage avec indexation incluse.

9 votes

Souvent, each est génial. Mais parfois, je veux juste une putain de boucle for traditionnelle. Parfois, la "méthode Ruby" peut être tout simplement ennuyeuse.

77voto

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

l'autre façon de procéder est la suivante

3.times do |n|
  puts n;
end

qui imprimera 0, 1, 2, et pourra donc être utilisé comme un itérateur de tableau.

Pensez que la variante correspond mieux aux besoins de l'auteur.

30voto

dsz Points 506

Je continue à trouver ce lien en tête de liste de google "ruby for loop", donc je voulais ajouter une solution pour les boucles où l'étape n'est pas simplement '1'. Pour ces cas, vous pouvez utiliser la méthode 'step' qui existe sur les objets Numerics et Date. Je pense que c'est une bonne approximation pour une boucle '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

17voto

EmFi Points 18645
array.each_index do |i|
  ...
end

Ce n'est pas très Ruby, mais c'est la meilleure façon de faire une boucle for à partir d'une question en Ruby.

0 votes

C'est génial. C'est vrai que la réponse n'est pas each mais plutôt each_index . +1

11voto

pinouchon Points 7706

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

Jusqu'à :

2.upto(4) {|i| puts i}
2
3
4 

Chacun :

(2..4).each {|i| puts i}
2
3
4

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X