| Autor | Zpráva | ||
|---|---|---|---|
| Parsel Profil * |
#1 · Zasláno: 27. 1. 2012, 09:56:45
Ahoj, mám takový dotaz na funkčnost switche, nemám teď možnost si to otestovat, ale nepustí mě to z hlavy - bude fungovat následující zápis?
switch (true) {
case (($page == 'novinky') or ($page == 'archiv')) :
break;
}
|
||
| Radek9 Profil |
#2 · Zasláno: 27. 1. 2012, 10:44:02
Parsel:
Ano, fungovat to bude, ale přijde mi to jako takové prznění switche. Brání ti něco podmínky použít? Právě přesně pro tyto logické hodnoty byly vytvořeny. |
||
| YoSarin Profil |
#3 · Zasláno: 27. 1. 2012, 11:08:14
Parsel:
To co jsi napsal je ekvivalentní k (podle mně přehlednějšímu) zápisu: switch ($page) {
case 'novinky':
case 'archiv':
doSomething();
break;
} |
||
| Parsel Profil * |
#4 · Zasláno: 27. 1. 2012, 11:10:03 · Upravil/a: Parsel
Rekneme ze pomoci switche prirazuji dle promene $page template, celkem asi 12 ruznych, ale v jednom pripade mam pro $page 'novniky' nebo 'archiv' stejnou template, tudiz jsem to nechtel rekneme duplikovat ale priradit na jednom miste. Resil bys to jinak?
YoSarin: o tomto zapisu jsem nemel poneti, myslim ze to bude presne to, co potrebuji! |
||
| Joker Profil |
#5 · Zasláno: 27. 1. 2012, 11:45:26
Parsel:
Ještě k tomu dodám, že v PHP když na konci case větve není break, pokračuje se jednoduše na dalším řádku, neboli zpracování „propadne“ do následující větve.
Tedy je možné udělat i: switch ($page) {
case 'novinky':
foo(); // kód jen pro $page = 'novinky'
case 'archiv':
doSomething(); // kód společný pro 'novinky' a 'archiv'
break;
}V některých jiných jazycích, například C#, toto udělat nejde (argumentem je, že to „propadávání“ způsobuje záludné chyby v případě, že programátor na break zapomene neúmyslně), ale pořád je možné „seskupovat“ několik case tak, jak to píše YoSarin (tj. bez kódu mezi nimi).
|
||
|
Časová prodleva: 14 let
|
|||
0