Sfairadora

  • Referenční příručka

Příkaz switch

switch(výraz)
(
case SEZNAM-HODNOT:
...
case SEZNAM-HODNOT:
blok
...
case SEZNAM-HODNOT:
blok
...
else|default:
blok
)
SEZNAM-HODNOT je jedna nebo více hodnot oddělených čárkami. Hodnoty musejí být zadány konstantními výrazy. Zadané hodnoty v seznamu musejí být stejného typu, jako je typ výrazu. Toto omezení lze obejít zadáním výrazu typu sjednocení (např. přetypováním) v tom případě se však při vyhodnocování neprovádějí žádné typové konverze. Každá hodnota může být v celém příkazu switch použita nejvýše v jednom seznamu.
Příkaz switch umožňuje větvení výpočtu podle hodnoty zadané výrazem v záhlaví příkazu. V těle příkazu je seznam větví – každá sestává ze seznamu hodnot a příslušného bloku, který se vyhodnotí, pokud je hodnota daná výrazem obsažena v seznamu hodnot daného bloku.
Seznam hodnot je uvozen klíčovým slovem case, za kterým následuje jedna nebo více hodnot oddělených čárkami. Seznam může být případně rozdělen na více částí, každá s vlastním uvozujícím case. Pokud klauzule case těsně navazují, považují se za jediný seznam následovaný jediným blokem. (Rozdělení seznamu hodnot mezi více klauzulí case je motivováno zvyklostmi z jazyka C a podobných).
Tedy:
case 1, 2, 3:
a
case 1:
case 2:
case 3:
je totéž.
Kromě toho může být obsažena větev else (případně default:), která se vyhodnotí, pokud daná hodnota nebyla nalezena v žádné větvi case. Užití klíčového slova else a default: je záměnné – odráží pouze různé zvyklosti z různých programovacích jazyků. V jednom příkazu switch lze použít nejvýše jedno z nich.
Výslednou hodnotou příkazu switch je hodnota vrácená provedeným blokem. Pokud nebyl pro hodnotu nalezen žádný blok, je výsledkem iniciální hodnota typu, který vracejí ostatní větve.
Výrazy bloky jsou blokem v tom smyslu, že v nich definované proměnné mají lokální platnost.
Pozor: Na rozdíl od jazyků jako C a dalších se pro danou hodnotu vyhodnotí pouze jeden blok. Vyhodnocování nikdy nepokračuje bloky dalšími, není tudíž třeba (a ani možné) bloky ukončovat příkazem break.
Příklad:
var String str = switch(x)
(
case 1: "jedna"
case 2: "dvě"
case 3: "tři"
else "moc"
);

Viz též

if