Article View: pl.comp.lang.javascript
Article #50986Re: Funkcja korzystająca z instrukcji switch
From: Vax
Date: Wed, 18 Jan 2012 12:00
Date: Wed, 18 Jan 2012 12:00
113 lines
5303 bytes
5303 bytes
W dniu 2012-01-18 10:08, NKAB - pisze:
> Vax<mail@zepsul.sie> napisał(a):
>
>> nie zrozumiałeś co pisał?
>
> Gdybym wiedział to nie odzywałbym się.
ale ja pisałem dokładnie to samo:
"W tym konkretnym przypadku starczy seria case-ów, bez niczego (a
zwłaszcza break), w ostatnim case zaś ów alert gdyż dla każdego
wcześniejszego przypadku jest ten sam (i tym razem z break, żeby nie
wykonać akcji dla default) a potem deafult z alternatywą (już bez
całkiem zbędnego break)."
>> switch(x){
>> case 1:
>> case 2:
>> case 3: alert('jest: '+x);break
>> default: alert('inna wartość')
>> }
> Teraz to już wiem o co chodzi.
>
> Ale zuważ, ze ten jego przykład praktycznie nie wykorzystuje
> tego co nalepsze w tym swiczu czyli szybki wyskok po napotkaniu
> spełnionego warunku.
Jak to nie? W trzecim przypadku, który zachodzi także dla drugiego i
pierwszego. Wykorzystuje praktycznie i logicznie. Sam zresztą to samo
pisałem. On za to namieszał z teorią n/t default, która sprawdzi się dla
default na samym końcu i mimo częściowego "sprawdzania się" jest tylko
teorią a nie faktycznym sposobem działania switch.
A czy "szybki wyskok" to jest "to co najlepsze" w switch, to bym nie
powiedział, raczej najpowszechniejsze i niestety dla większości jedyne.
Ot, taki zamiennik else-ifów. Otóż nie, możliwości są dużo większe.
[...]
> Default to warunek wyłacznie dla sytuacji awaryjnych i w zasadzie
> bardzo rzadko powinien być wykorzystywany przez aplikację,
To chyba w Twej twórczości. Jak sama nazwa wskazuje, jest to działanie
domyślne, gdy np. nie nastąpią sytuacje wyjątkowe, wymagające wykonania
jakich specjalnych akcji.
Dla sytuacji A,B oraz trzeba w pewien sposób przygotować dane, dla C
_dodatkowo_ wykonać wpis do logu, dla X w ogóle zrobić coś innego, a dla
50-ciu pozostałych przypadków zachować się standardowo:
switch(sytuacja){
case'X':cos_zupelnie_innego();break
case'C':loguj()
case'A':
case'B':preparuj()
default:standard()
}
czy taki _typowy_ kontroler wykracza poza Twą wyobraźnię?
Ew. w takim zapisie:
switch(sytuacja){
case'C':loguj()
case'A':
case'B':preparuj()
default:standard();break
case'X':cos_zupelnie_innego()
}
Zgaduję, że raczej się nie spotykałeś...
> naczęściej generuje
O tak, materiału porównawczego zapewne masz tyle, by uznać go za
reprezentatywny. Wybacz, ale twórczość amatorska i kursy dla opornych
pisane przez przypadkowe osoby się nie liczą.
[...]
> Te alerty w każdym warunku to sugestia, że na ogół wywołuje się tam
> jakieś funkcje, które dalej mogą robić coś z tym cosiem.
Te alerty i break na końcu każdej linii sugerują, że uważasz ja za
niezbędny element składniowy, na podobieństwo średnika, co w obu
przypadkach jest nieprawdą.
W tym wypadku pokazałeś nie "jakieś funkcje" ale powtórzoną bez sensu
kilkukrotnie takąż samą instrukcję, za to nie pokazałeś, co czyni break
i czy mogło by go czasem nie być.
Czyli "zniknąłeś" sytuację "dla wartości A lub B lub C wykonaj to samo",
błędnie sugerując, że każdy przypadek _należy_ obsłużyć indywidualnie.
> Ja dałem swój przykład pisany z palca bez zastanawiania
Ja też często pisze z palca, ale nigdy bez zastanawiania. Gorąco polecam.
> a koledzy powinni dać swoje przykłady na zasadzie:
Nie ucz kolegów, co powinni, pierwiej sam zacznij się pisać "z
zastanowieniem" - choćby chwilowym. To nie jest grupa o pierdołach, ale
dla niektórych źródło wiedzy, miejsce nauki.
> "to pozwolę sobie poprawić twój kod..." no i oczywiście
> zamiast słów dać poprostu ten kod, właśnie jak dziecku.
Niezrozumienie frazy "starczy seria pustych case-ów, w ostatnim case
alert i break, potem default dla pozostałych" raczej najlepiej o Tobie
nie świadczy ;)
> A tak to wyszło jak u tego trepa Maciarewicza (...)
kuźwa, może przynajmniej tu obywać się może bez polityki?
v.
Technical Details
Message-ID:
<jf6c82$uhd$1@news.icm.edu.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!.POSTED!not-for-mailReferences:
<a06e9e8f-2ae6-41a8-b804-31e3ef49e304@d10g2000vbh.googlegroups.com> <jeebqu$2r0$1@inews.gazeta.pl> <jel0oj$hbq$1@news.icm.edu.pl> <jeouk7$1m$1@inews.gazeta.pl> <jep6t6$ges$1@mx1.internetia.pl> <jepa9c$hn4$1@news.icm.edu.pl> <jf0lrh$2k0$1@inews.gazeta.pl> <jf0ucr$gs4$1@mx1.internetia.pl> <jf39d9$mf$1@inews.gazeta.pl> <jf49km$jko$1@news.icm.edu.pl> <jf625l$s3j$1@inews.gazeta.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!.POSTED!not-for-mail From: Vax <mail@zepsul.sie> Newsgroups: pl.comp.lang.javascript Subject: Re: Funkcja korzystająca z instrukcji switch Date: Wed, 18 Jan 2012 13:00:17 +0100 Organization: ICM, Uniwersytet Warszawski Lines: 113 Message-ID: <jf6c82$uhd$1@news.icm.edu.pl> References: <a06e9e8f-2ae6-41a8-b804-31e3ef49e304@d10g2000vbh.googlegroups.com> <jeebqu$2r0$1@inews.gazeta.pl> <jel0oj$hbq$1@news.icm.edu.pl> <jeouk7$1m$1@inews.gazeta.pl> <jep6t6$ges$1@mx1.internetia.pl> <jepa9c$hn4$1@news.icm.edu.pl> <jf0lrh$2k0$1@inews.gazeta.pl> <jf0ucr$gs4$1@mx1.internetia.pl> <jf39d9$mf$1@inews.gazeta.pl> <jf49km$jko$1@news.icm.edu.pl> <jf625l$s3j$1@inews.gazeta.pl> NNTP-Posting-Host: 89-68-3-67.dynamic.chello.pl Mime-Version: 1.0 X-Trace: news.icm.edu.pl 1326888002 31277 89.68.3.67 (18 Jan 2012 12:00:02 GMT) X-Complaints-To: usenet@news.icm.edu.pl NNTP-Posting-Date: Wed, 18 Jan 2012 12:00:02 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:8.0) Gecko/20111105 Thunderbird/8.0 In-Reply-To: <jf625l$s3j$1@inews.gazeta.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit