web-dev-qa-db-fra.com

Équivalent de "continue" dans Ruby

En C et dans de nombreux autres langages, il existe un mot clé continue qui, lorsqu'il est utilisé à l'intérieur d'une boucle, permet de passer à la prochaine itération de la boucle. Existe-t-il un équivalent de ce mot clé continue dans Ruby?

616
Mark Szymanski

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 
889
Ian Purton

next

regardez aussi redo qui refait l'itération actuelle.

104
Nick Moore

En écrivant la réponse de Ian Purton d'une manière légèrement plus idiomatique:

(1..5).each do |x|
  next if x < 2
  puts x
end

Impressions:

  2
  3
  4
  5
79
sberkley

Les boucles internes et les méthodes d'itérateur telles que each et map le mot clé next dans Ruby aura pour effet de passer à la prochaine itération de la boucle (identique à continue en C).

Cependant, ce qu'il fait réellement, c'est simplement revenir du bloc actuel. Vous pouvez donc l’utiliser avec n’importe quelle méthode prenant un bloc - même si cela n’a rien à voir avec une itération.

40
sepp2k

Ruby a deux autres mots clés de contrôle de boucle/itération: redo et retry. En savoir plus sur eux, et la différence entre eux, à Ruby QuickTips .

28
19WAS85

Je pense que cela s'appelle next .

7
idursun

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

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 nombre 10

1 2 3 4 6 7 8 9 10

1
Rakesh Kumar