`Next` e `Break` in Ruby

Passando argomenti a metodi di escape iterazione comuni per un migliore controllo in enumerables.

Ruby fornisce due mezzi di escape da un enumerable:next entrerà nell’iterazione successiva senza ulteriori valutazioni ebreak uscirà completamente dall’enumerable.

Diamo una rapida occhiata a entrambi con alcuni semplici esempi.

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

Nell’esempio qui sopra vediamo che 1 non è stampato sulla console, perché la chiamata di next trigger alla prima iterazione (1 a meno di 2), saltando il puts istruzione. Il condizionale non è soddisfatto nelle due iterazioni seguenti e l’istruzioneputs restituiscenum alla console, come previsto, seguito da un ritorno dia.

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

Conbreak è successo qualcosa di completamente diverso. Qui, alla prima iterazione, 1 viene nuovamente valutato come inferiore a 2, e quindi viene eseguita la nostra chiamata a break, lasciando completamente l’enumerabile. In questo caso, vediamo che le iterazioni future non hanno luogo e viene restituito nil.

Mentre questa escape è desiderabile, cosa succede se dovessimo restituire qualcosa di diverso danil? Fortunatamente, siabreak chenext accettano un argomento per impostare manualmente un valore restituito.

il Passaggio di argomenti

in Primo luogo, diamo un’occhiata a come funziona con break:

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

Qui abbiamo passato num come argomento break (ricordo che le parentesi sono opzionali in Ruby, così break num e break(num) sono valutati in modo identico) e specificato manualmente il valore di ritorno. Se dovesse mai essere necessario restituire qualcosa di diverso da nilquando viene attivatobreak, questo può essere eccezionalmente utile.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.