Si je voulais faire quelque chose comme ça:
collection.each do |i|
return nil if i == 3
..many lines of code here..
end
Comment pourrais-je obtenir cet effet? Je sais que je pourrais simplement tout envelopper à l'intérieur du bloc dans une grande déclaration if, mais j'aimerais éviter l'imbrication si possible.
Pause ne fonctionnerait pas ici, parce que je ne pas veux arrêter l' itération des éléments restants.
next value
etbreak value
. Exactement ce que je cherchais.break value
n'a pas fonctionné pour moi, toutnext value
a bien fonctionné. Merci beaucoup.next
et nebreak
sont en aucun cas spécifiques aux constructions en boucle, donc l'article que vous avez lié est très trompeur (car il implique fortement le contraire). Et mes descriptions sont définitivement correctes quandnext
etbreak
sont utilisées à l'intérieur de blocs (notez quewhile
etfor
sont rarement, voire jamais, utilisées dans Ruby, donc 99% des utilisations denext
etbreak
sont dans des blocs).#!/usr/bin/ruby collection = [1, 2, 3, 4, 5 ] stopped_at = collection.each do |i| break i if i == 3 puts "Processed #{i}" end puts "Stopped at and did not process #{stopped_at}"
la source
Dans cet exemple, vous pouvez utiliser break pour terminer la boucle prématurément:
collection.each do |i| break if i == 3 ...many lines end
... bien sûr, cela suppose que vous ne cherchez pas réellement à renvoyer une valeur, sortez simplement du bloc.
la source
break
dans Ruby -break 5
provoqueraeach
le retour 5.