siirtävät argumentit yhteisille iteraation karkaamismenetelmille paremmiksi ohjauksiksi enumeraareissa.
Ruby tarjoaa kaksi pakokeinoa: next
siirtyy seuraavaan iteraatioon ilman lisäarviointia, ja break
poistuu luetteloidusta kokonaan.
Tarkastellaanpa molempia nopeasti muutamien yksinkertaisten esimerkkien avulla.
# Example of `next`a = a.each do |num|
next if num < 2
puts num
end# console output
2
3
=>
yllä olevassa esimerkissä näemme, että 1
ei tulosteta konsolille, koska kutsu next
laukaisee ensimmäisen iteraation (1 on pienempi kuin 2) ohittaen puts
lausunto. Ehdollinen ei täyty kahdessa seuraavassa iteraatiossa ja puts
statement outputs num
konsolille odotetusti, minkä jälkeen a
.
# Example of `break`a = a.each do |num|
break if num < 2
puts num
end# console output
=> nil
kanssa break
on tapahtunut jotain aivan muuta. Tässä ensimmäisellä iteraatiolla 1 taas arvioidaan olevan alle 2, ja niin meidän kutsumme break
toteutetaan, jättäen luetteloitavan kokonaan. Tällöin nähdään, että tulevia iteraatioita ei tapahdu ja nil
palautetaan.
vaikka tämä pako on suotavaa, mitä jos meidän täytyisi palauttaa jotain muuta kuin nil
? Onneksi sekä break
että next
hyväksyvät argumentin, jolla palautusarvo asetetaan manuaalisesti.
läpäisevien argumenttien
katsotaan ensin, miten se toimii break
:
a = a.each do |num|
break num if num < 2
puts num
end# console output
=> 1
tässä olemme läpäisseet num
argumenttina break
(muista, että sulut ovat Rubyssa valinnaisia, joten break num
ja break(num)
arvioidaan identtisesti) ja määritettiin manuaalisesti palautusarvo. Jos joudut joskus palauttamaan jotain muuta kuin nil
kun break
laukeaa, tämä voi olla poikkeuksellisen hyödyllistä.