`Next` și `Break` în Ruby

care trece argumente la metode comune de evacuare iterație pentru un control mai bun în enumerables.

Ruby oferă două mijloace de scăpare dintr-un enumerabil:next va intra în următoarea iterație fără o evaluare suplimentară șibreak va ieși din enumerabil în întregime.

Să aruncăm o privire rapidă la ambele cu câteva exemple simple.

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

în exemplul de mai sus vom vedea că1 nu este imprimat la consola, deoarece apelul lanext declanșează pe prima iterație (1 este mai mică de 2), sărind peste puts declarație. Condiționalul nu este îndeplinit în următoarele două iterații și declarația puts iese num la consolă, așa cum era de așteptat, urmată de o revenire a a.

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

cu break s-a întâmplat ceva complet diferit. Aici, la prima iterație, 1 este din nou evaluat ca fiind mai mic de 2 și astfel apelul nostru la break este executat, lăsând enumerabilul în întregime. În acest caz, vedem că iterațiile viitoare nu au loc și nil este returnat.

în timp ce această evadare este de dorit, ce se întâmplă dacă am nevoie pentru a reveni altceva decât nil? Din fericire, ambelebreak șinext acceptă un argument pentru a seta manual o valoare returnată.

trecerea argumentelor

În primul rând, să vedem cum funcționează cu break:

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

aici am trecut num ca argument pentru break (amintiți-vă că parantezele sunt opționale în Ruby, deci break num și break(num) sunt evaluate identic) și specificate manual valoarea returnată. Dacă ar trebui vreodată să returnați altceva decâtnil cândbreak este declanșat, acest lucru poate fi extrem de util.

Lasă un răspuns

Adresa ta de email nu va fi publicată.