`Next` et `Break` dans Ruby

Passer des arguments aux méthodes d’échappement d’itération courantes pour un meilleur contrôle dans les énumérables.

Ruby fournit deux moyens d’échapper à un énumérable : next entrera dans l’itération suivante sans autre évaluation, et break sortira entièrement de l’énumérable.

Jetons un coup d’œil aux deux avec quelques exemples simples.

# Example of `next`a = a.each do |num|
next if num < 2
puts num
end# console output
2
3
=>

Dans l’exemple ci-dessus, nous voyons que 1 n’est pas imprimé sur la console, car l’appel à next se déclenche à la première itération (1 est inférieur à 2), ignorant le puts. La condition n’est pas remplie dans les deux itérations suivantes et l’instruction puts envoie num à la console, comme prévu, suivie d’un retour de a.

# Example of `break`a = a.each do |num|
break if num < 2
puts num
end# console output
=> nil

Avec breakquelque chose de complètement différent s’est produit. Ici, lors de la première itération, 1 est à nouveau évalué comme étant inférieur à 2, et donc notre appel à break est exécuté, laissant l’énumérable entièrement. Dans ce cas, nous voyons que les itérations futures n’ont pas lieu et nil est renvoyé.

Bien que cette évasion soit souhaitable, que se passe-t-il si nous devions retourner autre chose que nil? Heureusement, break et next acceptent tous deux un argument pour définir manuellement une valeur de retour.

Passer des arguments

Tout d’abord, regardons comment cela fonctionne avec break:

a = a.each do |num|
break num if num < 2
puts num
end# console output
=> 1

Ici, nous avons passé num comme argument à break (rappelez-vous que les parenthèses sont facultatives dans Ruby, donc break num et break(num) sont évaluées de manière identique) et spécifient manuellement la valeur de retour. Si jamais vous devez retourner autre chose que nil lorsque break est déclenché, cela peut être exceptionnellement utile.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.