Předávání argumenty společné iterace uniknout metody pro lepší kontrolu v enumerables.
Ruby nabízí dva způsoby úniku z enumerable: next
vstoupí do další iterace bez dalšího hodnocení, a break
vystoupí z enumerable úplně.
pojďme se rychle podívat na oba s několika jednoduchými příklady.
# Example of `next`a = a.each do |num|
next if num < 2
puts num
end# console output
2
3
=>
Ve výše uvedeném příkladu vidíme, že 1
není vytištěné na konzole, protože volání na next
spouští na první iterace (1 je menší než 2), přeskočení puts
prohlášení. Podmíněný není splněna v následujících dvou iterací a puts
prohlášení výstupy num
do konzole, jak se očekávalo, po kterém následuje návrat a
.
# Example of `break`a = a.each do |num|
break if num < 2
puts num
end# console output
=> nil
s break
stalo se něco úplně jiného. Tady, na první iterace, 1 je opět hodnocena jako méně než 2, a tak se náš hovor do break
je popraven, takže enumerable úplně. V tomto případě vidíme, že se budoucí iterace neuskuteční a nil
se vrátí.
i když je tento únik žádoucí, co kdybychom potřebovali vrátit něco jiného než nil
? Naštěstí oba break
a next
akceptují argument pro ruční nastavení návratové hodnoty.
Předávání argumentů
za Prvé, pojďme se podívat na to, jak to funguje u break
:
a = a.each do |num|
break num if num < 2
puts num
end# console output
=> 1
Tady jsme prošli num
jako argument break
(pamatujte si, že závorky jsou volitelné v Ruby, break num
break(num)
jsou hodnoceny shodně), a ručně zadané návratovou hodnotu. Pokud byste měli někdy potřebovat vrátit něco jiného, než nil
break
je spuštěna, to může být mimořádně užitečné.