É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?

Mark Szymanski
la source
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 
Ian Purton
la source
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.

Nick Moore
la source
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.

sepp2k
la source
ainsi qu'une belle déclaration de rétablissement
Sigurd
9

Je pense que cela s'appelle ensuite .

idursun
la source
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

Rakesh Kumar
la source