Utilisez le mot-clé next
. Si vous ne souhaitez pas passer à l'élément suivant, utilisez break
.
Lorsqu'il next
est utilisé dans un bloc, il provoque la fermeture immédiate du bloc, renvoyant le contrôle à la méthode itérateur, qui peut alors commencer une nouvelle itération en invoquant à nouveau le bloc:
f.each do |line| # Iterate over the lines in file f
next if line[0,1] == "#" # If this line is a comment, go to the next
puts eval(line)
end
Lorsqu'il est utilisé dans un bloc, break
transfère le contrôle hors du bloc, hors de l'itérateur qui a appelé le bloc et vers la première expression suivant l'invocation de l'itérateur:
f.each do |line| # Iterate over the lines in file f
break if line == "quit\n" # If this break statement is executed...
puts eval(line)
end
puts "Good bye" # ...then control is transferred here
Et enfin, l'utilisation de return
dans un bloc:
return
provoque toujours le retour de la méthode englobante, quelle que soit sa profondeur d'imbrication dans les blocs (sauf dans le cas des lambdas):
def find(array, target)
array.each_with_index do |element,index|
return index if (element == target) # return from find
end
nil # If we didn't find the element, return nil
end