Již nějakou dobu se zabýváme v našem povídání o jazyku Ruby cykly. Pokud jste četli předchozí články, jistě jste zjistili, že práce s cykly je mnohdy v Ruby mírně odlišná od aplikace cyklů v jiných programovacích jazycích.
Dnes bychom si měli něco říct o další možné součásti cyklů, jsou to příkazy break, redo a next. Tyto předchozí příkazy jsou využívány ve spojení cyklů, u kterých se vyskytují tzv. iterátory.
S iterátory jste měli možnost se v předchozích článcích setkat, vzpomeňte si například na článek o cyklech for, tam s iterátory zacházíte zcela běžně. Proto, pokud nevíte co je to iterátor doporučuji Vám přečíst si článek o cyklech for.
Co příkazy redo, break a next vlastně znamenají? Na to je velmi jednoduchá odpověď:
Pro bližší vysvětlení si všechny příkazy ukážeme na jednoduchých příkladech.
Představte si následující situaci: potřebujete napsat kód, který se neustále bude uživatele na něco ptát, pokud uživatel zadá nějaké předem zvolené písmenko tak se vyonávání kódu zastaví:
loop do
puts(”Zmacknete nejake pismenko”)
puts(”Pokud zmacknete písmenko x, program ukoncite”)
gets
chomp
break if $_==”x”
end
Zkrátka pokud během iterace budete chtít vynechat nějaký prvek, tak to můžete učinit pomocí příkazu next. Představte si, že například budete chtít vyiterovat číslo od 1 do 10a budete chtít během iterace vynechat číslo 5, mohli byste to provést takto:
1.upto(10) do |cislo|
next if cislo==5
puts cislo.to_s + “/1 = “+(cislo/1).to_s
end
Výsledek bude tedy takovýto:
1/1 = 1
2/1 = 2
3/1 = 3
4/1 = 4
6/1 = 6
7/1 = 7
8/1 = 8
9/1 = 9
10/1 = 10
Pokud použijeme předchozí příklad ve kterém jsme vydělili vyterované číslo s jedničkou a místo příkazu next dáme příkaz redo tak se nám vypíší pouze čísla od 1 do 4:
1.upto(10) do |cislo|
redo if cislo==5
puts cislo.to_s + “/1 = “+(cislo/1).to_s
end
Výsledek bude:
1/1 = 1
2/1 = 2
3/1 = 3
4/1 = 4
O programování a všem okolo využívá WordPress MU a běží na Blog.zive.cz. Vytvořte si svůj vlastní blog
Sledování přes RSS: články
a komentáře