‘Next’ y ‘Break’ en Ruby

Pasando argumentos a métodos de escape de iteración comunes para un mejor control en enumerables.

Ruby proporciona dos medios para escapar de un enumerable: next entrará en la siguiente iteración sin evaluación adicional, y break saldrá del enumerable por completo.

Echemos un vistazo rápido a ambos con algunos ejemplos simples.

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

En el ejemplo anterior vemos que el 1 no se imprime en la consola, porque la llamada next activa en la primera iteración (1 es menor que 2), omitiendo el puts declaración. El condicional no se cumple en las dos iteraciones siguientes y la instrucción puts envía num a la consola, como se esperaba, seguida de un retorno de a.

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

Con break ha sucedido algo completamente diferente. Aquí, en la primera iteración, 1 de nuevo se evalúa como menor que 2, por lo que se ejecuta nuestra llamada a break, dejando el enumerable por completo. En este caso, vemos que las iteraciones futuras no tienen lugar y se devuelve nil.

Si bien este escape es deseable, ¿y si necesitáramos devolver algo que no sea nil? Afortunadamente, tanto breakcomo next aceptan un argumento para establecer manualmente un valor de retorno.

Pasando argumentos

Primero, veamos cómo funciona con break:

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

Aquí hemos pasado num como argumento para break (recuerde que los paréntesis son opcionales en Ruby, por lo que break num y break(num) se evalúan de forma idéntica) y se especifica manualmente el valor devuelto. Si alguna vez necesita devolver algo que no sea nil cuando se activa break, esto puede ser excepcionalmente útil.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.