argumenten doorgeven aan algemene iteratie escape methoden voor betere controle in enumerables.
Ruby biedt twee manieren om uit een enumerable te ontsnappen: next
zal de volgende iteratie invoeren zonder verdere evaluatie, en break
zal de enumerable volledig verlaten.
laten we snel naar beide Kijken met enkele eenvoudige voorbeelden.
# Example of `next`a = a.each do |num|
next if num < 2
puts num
end# console output
2
3
=>
in het bovenstaande voorbeeld zien we dat 1
niet wordt afgedrukt op de console, omdat de aanroep naar next
triggers op de eerste iteratie (1 is minder dan 2), waarbij het puts
wordt overgeslagen. Aan de voorwaarde wordt niet voldaan in de volgende twee iteraties en de puts
statement outputs num
naar de console, zoals verwacht, gevolgd door een terugkeer van a
.
# Example of `break`a = a.each do |num|
break if num < 2
puts num
end# console output
=> nil
met break
is er iets heel anders gebeurd. Hier, bij de eerste iteratie, wordt 1 opnieuw geëvalueerd als kleiner dan 2, en dus wordt onze aanroep naar break
uitgevoerd, waarbij de enumerable volledig wordt gelaten. In dit geval zien we dat toekomstige iteraties niet plaatsvinden en nil
wordt geretourneerd.
hoewel deze escape wenselijk is, wat als we iets anders dan nil
moesten retourneren? Gelukkig accepteren zowel break
als next
een argument om handmatig een retourwaarde in te stellen.
passerende argumenten
laten we eerst eens kijken hoe het werkt met break
:
a = a.each do |num|
break num if num < 2
puts num
end# console output
=> 1
Hier hebben we num
als argument voor break
(onthoud dat haakjes optioneel zijn in Ruby, dus break num
en break(num)
worden identiek geëvalueerd) en handmatig de retourwaarde gespecificeerd. Als u ooit iets anders moet retourneren dan nil
wanneer break
wordt geactiveerd, kan dit uitzonderlijk nuttig zijn.