”Next” ja ”Break” Rubyssa

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ä.

Vastaa

Sähköpostiosoitettasi ei julkaista.