Équivalent de «continuer» en Ruby


648

En C et dans de nombreux autres langages, il existe un continuemot-clé qui, lorsqu'il est utilisé à l'intérieur d'une boucle, passe à l'itération suivante de la boucle. Y a-t-il un équivalent de ce continuemot - clé dans Ruby?


4
continue ne "redémarre" pas les boucles mais passe à l'itération suivante de la boucle.
Matt Crinklaw-Vogt

1
@mlaw: J'ai modifié ma question en conséquence pour éviter toute confusion future.
Mark Szymanski

7
@dbr le double que vous avez trouvé a été demandé après celui-ci.
Droogans

Réponses:


934

Oui, ça s'appelle next.

for i in 0..5
   if i < 2
     next
   end
   puts "Value of local variable is #{i}"
end

Cela génère les éléments suivants:

Value of local variable is 2
Value of local variable is 3
Value of local variable is 4
Value of local variable is 5
 => 0..5 

13
Voici comment je me souviens - Ruby respecte Perl ( next) au-dessus de C ( continue)
Colonel Panic

111

next

Regardez aussi redoqui Répète l' actuelle itération.


39
... parce que le rubis est rad comme ça.
matt walters

1
Ruby a beaucoup emprunté à Perl, y compris la redocommande de Perl (ou son essence, de toute façon). Pour l'interprétation de Ruby, recherchez «refaire» dans cette page .
MarkDBlackwell


42

Les boucles for internes et les méthodes d'itérateur comme eachet maple nextmot - clé dans ruby ​​auront pour effet de passer à l'itération suivante de la boucle (comme continueen C).

Cependant, ce qu'il fait est juste de revenir du bloc actuel. Vous pouvez donc l'utiliser avec n'importe quelle méthode qui prend un bloc - même si cela n'a rien à voir avec l'itération.


ainsi qu'une belle déclaration de rétablissement
Sigurd



1

Utilisez ensuite, il contournera cette condition et le reste du code fonctionnera. Ci-dessous, j'ai fourni le script complet et mis

class TestBreak
  puts " Enter the nmber"
  no= gets.to_i
  for i in 1..no
    if(i==5)
      next
    else 
      puts i
    end
  end
end

obj=TestBreak.new()

Sortie: entrez le nmber 10

1 2 3 4 6 7 8 9 10

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.