’Next’ och ’Break’ i Ruby

passerar argument till vanliga iterationsflyktmetoder för bättre kontroll i enumerables.

Ruby ger två sätt att fly från en uppräkningsbar: nextkommer in i nästa iteration utan ytterligare utvärdering, ochbreak kommer att gå ut från uppräkningsbar helt.

Låt oss ta en snabb titt på båda med några enkla exempel.

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

i ovanstående exempel ser vi att 1 skrivs inte ut till konsolen, eftersom samtalet till next triggers på den första iterationen (1 är mindre än 2), hoppar över puts uttalande. Villkoret uppfylls inte i följande två iterationer ochputs uttalande utgångarnum till konsolen, som förväntat, följt av en retur ava.

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

med break har något helt annat hänt. Här, vid den första iterationen, utvärderas 1 igen som mindre än 2, och så är vårt samtal till break exekverat och lämnar det uppräknade helt. I det här fallet ser vi att framtida iterationer inte äger rum och nil returneras.

även om denna flykt är önskvärd, vad händer om vi behövde returnera något annat ännil? Lyckligtvis accepterar både break och next ett argument för att manuellt ställa in ett returvärde.

passande argument

Låt oss först titta på hur det fungerar med break:

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

Här har vi passerat num som argument till break (kom ihåg att parenteser är valfria i Ruby, så break num och break(num) utvärderas identiskt) och manuellt angav returvärdet. Om du någonsin skulle behöva returnera något annat än nil när break utlöses kan detta vara exceptionellt användbart.

Lämna ett svar

Din e-postadress kommer inte publiceras.