Se eu quisesse fazer algo assim:
collection.each do |i|
return nil if i == 3
..many lines of code here..
end
Como eu conseguiria esse efeito? Eu sei que poderia simplesmente envolver tudo dentro do bloco em uma grande instrução if, mas gostaria de evitar o aninhamento, se possível.
Break não funcionaria aqui, porque não quero interromper a iteração dos elementos restantes.
next value
ebreak value
. Exatamente o que eu estava procurando.break value
não funcionou para mim, enquantonext value
funcionou bem. Muito obrigado.next
e nãobreak
são de forma alguma específicos para construções de loop, então o artigo que você vinculou é muito enganoso (uma vez que implica fortemente o oposto). E minhas descrições estão definitivamente corretas quandonext
ebreak
são usadas dentro de blocos (observe quewhile
efor
raramente, ou nunca, são usadas em Ruby, então 99% dos usos denext
ebreak
estão dentro de blocos).fonte
Neste caso, você pode usar break para encerrar o loop mais cedo:
... claro, isso pressupõe que você não está realmente procurando retornar um valor, apenas sair do bloco.
fonte
break
em Ruby -break 5
fará comeach
que retorne 5.