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: 11 let
|
0