Je cherchais spécifiquement l'indexation en boucle, aucune de ces solutions ne rend immédiatement évident comment faire cela. l'op a trahi ses intentions avec array.length dans le code ...
jheriko
6
Lisez attentivement ma réponse. Il existe une solution de bouclage avec indexation incluse.
Eimantas
8
Souvent, eachc'est génial. Mais parfois, je veux juste une putain de boucle for traditionnelle. Parfois, la "méthode Ruby" peut être tout simplement ennuyeuse.
Ruben Martinez Jr.
1
comment définir manuellement l'index en rubis pour pouvoir écrire un tri moi
Muhammad Umer
6
et si je veux sauter les deux prochaines itérations
Muhammad Umer
77
limit = array.length;
for counter in0..limit
--- make some actions ---
end
l'autre façon de faire est la suivante
3.times do|n|
puts n;
end
cela affichera 0, 1, 2, donc pourrait être utilisé comme un itérateur de tableau aussi
Pensez que cette variante correspond mieux aux besoins de l'auteur
Je continue à frapper ceci comme un lien principal pour google "ruby for loop", donc je voulais ajouter une solution pour les boucles où l'étape n'était pas simplement "1". Dans ces cas, vous pouvez utiliser la méthode «step» qui existe sur les objets Numerics et Date. Je pense que c'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
Un avantage de .each ... do est que le bloc temporaire tombe hors de portée à la fin de la boucle, tandis que for ... in laisse le bloc temporaire dans la portée.
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 tableau 'collection' qui prend un bloc avec 'blockargument' comme argument". La syntaxe de bloc dans Ruby est 'do ... end' ou '{...}' pour les instructions sur une seule ligne.
L'argument de bloc '| item |' est facultatif mais s'il est fourni, le premier argument représente automatiquement l'élément énuméré en boucle.
Réponses:
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
la source
each
c'est génial. Mais parfois, je veux juste une putain de boucle for traditionnelle. Parfois, la "méthode Ruby" peut être tout simplement ennuyeuse.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
cela affichera 0, 1, 2, donc pourrait être utilisé comme un itérateur de tableau aussi
Pensez que cette variante correspond mieux aux besoins de l'auteur
la source
Je continue à frapper ceci comme un lien principal pour google "ruby for loop", donc je voulais ajouter une solution pour les boucles où l'étape n'était pas simplement "1". Dans ces cas, vous pouvez utiliser la méthode «step» qui existe sur les objets Numerics et Date. Je pense que c'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
la source
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
la source
array.each_index do |i| ... end
Ce n'est pas très rubis, mais c'est le meilleur moyen de faire la boucle for à partir d'une question en Ruby
la source
each
mais plutôteach_index
. +1Pour itérer une boucle un nombre fixe de fois, essayez:
n.times do #Something to be done n times end
la source
Si vous n'avez pas besoin d'accéder à votre tableau , (juste une simple boucle for), vous pouvez utiliser upto ou each:
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
la source
Quelle? Depuis 2010 et personne n'a mentionné que Ruby avait une boucle fine for / in (c'est juste que personne ne l'utilise):
ar = [1,2,3,4,5,6] for item in ar puts item end
la source
['foo', 'bar', 'baz'].each_with_index {|j, i| puts "#{i} #{j}"}
la source
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 tableau 'collection' qui prend un bloc avec 'blockargument' comme argument". La syntaxe de bloc dans Ruby est 'do ... end' ou '{...}' pour les instructions sur une seule ligne.
L'argument de bloc '| item |' est facultatif mais s'il est fourni, le premier argument représente automatiquement l'élément énuméré en boucle.
la source