‘Next’ and ‘Break’ in Ruby

Passing arguments to common iteration escape methods for better control in enumerables.

Ruby fornece dois meios de escapar de um enumerable: next vai entrar a próxima iteração, sem uma avaliação adicional, e break vai sair do enumerável inteiramente.

vamos dar uma olhada rápida em ambos com alguns exemplos simples.

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

No exemplo acima vemos que 1 não é impressa no console, porque a chamada de next dispara na primeira iteração (1 é menor que 2), ignorando o puts instrução. A condicional não é atendida, nos seguintes duas iterações e o puts declaração de saídas num para o console, como esperado, seguido por um retorno de a.

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

Com break algo totalmente diferente aconteceu. Aqui, na primeira iteração, 1 novamente é avaliado como sendo inferior a 2, e assim nossa chamada para break é executada, deixando o enumerável inteiramente. Neste caso, vemos que as iterações futuras não ocorrem e nil é devolvido.

embora esta fuga seja desejável, e se precisássemos devolver algo diferente de nil? Felizmente, ambos breake next aceitam um argumento para definir manualmente um valor de retorno.

a Passagem de argumentos

Primeiro, vamos ver como ele funciona com break:

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

Aqui temos passado num como o argumento de break (lembre-se que os parênteses são opcionais em Ruby, portanto, break num e break(num) são avaliados de forma idêntica) e especificado manualmente o valor de retorno. Se alguma vez precisar de devolver algo que não seja nil quando break for despoletado, isto pode ser excepcionalmente útil.

Deixe uma resposta

O seu endereço de email não será publicado.