Comment puis-je retourner quelque chose au début d'un bloc?
Si je voulais faire quelque chose comme ceci:
collection.each do |i|
return nil if i == 3
..many lines of code here..
end
Comment aurais-je obtenir cet effet? Je sais que je pourrais juste envelopper le tout à l'intérieur du bloc dans un grand si, mais je voudrais éviter la nidification, si possible.
Pause ne serait pas travailler ici, parce que je ne pas souhaitez arrêter l'itération sur les éléments restants.
Vous devez vous connecter pour publier un commentaire.
next
à l'intérieur d'un bloc de revient de l'immeuble.break
à l'intérieur d'un bloc de revient de la fonction qui a abouti à la bloquer. Poureach
cela signifie quebreak
sort de la boucle etnext
passe à l'itération suivante de la boucle (d'où le nom). Vous pouvez les valeurs de retour avecnext value
etbreak value
.next
était ce que je cherchais, merci.next value
etbreak value
. Exactement ce que je cherchais.break value
ne fonctionne pas pour moi, alors quenext value
a bien fonctionné. Merci beaucoup.break
sont en aucune façon spécifique pour les boucles, donc l'article lié est très trompeur (puisqu'il implique fortement le contraire). Et mes descriptions sont certainement correctes lorsquenext
etbreak
sont utilisés à l'intérieur des blocs (à noter quewhile
etfor
sont rarement, si jamais, utilisé en Ruby, donc 99% des utilisations denext
etbreak
sont à l'intérieur des blocs).Dans ce cas, vous pouvez utiliser la pause pour mettre fin à la boucle de début:
...bien sûr, c'est en supposant que vous n'êtes pas vraiment à la recherche de retourner une valeur juste de sortir du bloc.
break
en Ruby —break 5
va provoquereach
de retour 5.