Article View: pl.comp.lang.javascript
Article #50996Re: Funkcja korzystająca z instrukcji switch
From: PawelS
Date: Fri, 20 Jan 2012 12:52
Date: Fri, 20 Jan 2012 12:52
98 lines
3636 bytes
3636 bytes
Vax pisze:
> W dniu 2012-01-09 10:25, NKAB - pisze:
>
>> switch(z)
>> {
>> case 'string': alert(z); break;
>> case 'number': alert(z); break;
>> case 'object': alert(z); break;
>> default: alert('nic...'); break;
>> }
>
> Gdyby break było obligatoryjne, to by go wcale w składni nie było, a
> jego rolę spełniałby następny case lub default (a jeszcze break po
> default - po jakiego grzyba?).
Żeby kod wyglądał syntaktycznie poprawniej :P
To żeby wywołać trochę zamieszania oraz krytyki
(pod moim adresem of course)
to ja w zależności od potrzeb robię tak:
<?php
private function checkpermissions($idissue) {
switch ($thiscall) {
case 'contextmenu':
// OK: PERMISSIONS - everybody can show context menu
return true;
break;
case 'relations':
if ($this->USERPERMISSIONS[...inline_ciach...]) {
// OK: PERMISSIONS - manage_issue_relations=1 => can manage issue
relations
return true;
} else {
return false;
}
break;
case 'reply':
if ($this->USERPERMISSIONS[...inline_ciach...]) {
// OK: PERMISSIONS - edit_issues=1 => can edit issues
return true;
} else {
return false;
}
break;
case 'edit':
if ($this->USERPERMISSIONS[...inline_ciach...]) {
// OK: PERMISSIONS - edit_issues=1 => can edit issues
return true;
} else {
return false;
}
break;
case 'move':
if ($this->USERPERMISSIONS[...inline_ciach...]) {
// OK: PERMISSIONS - move_issues=1 => can move issues
return true;
} else {
return false;
}
break;
case 'destroy':
if ($this->USERPERMISSIONS[...inline_ciach...]) {
// OK: PERMISSIONS - delete_issues=1 => can delete issues
return true;
} else {
return false;
}
break;
case 'issuesshow':
default:
if ($this->USERPERMISSIONS[...inline_ciach...]) {
// OK: PERMISSIONS - view_issues=1 => can view issues
return true;
} else {
return false;
}
break;
}
return true;
}
?>
Zwróćcie uwagę na ostatni return true w funkcji,
który z racji obecności w switch warunku default,
a w nim z kolei return, który zawsze się wykona,
to ostatni return jest zbędny, ale jest ;)
> 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).
> Naprawdę warto zrozumieć, co to case i break oznacza, a nie traktować je
> bezmyślnie jak znaczniki początku i końca bloku czegoś na kształt "if".
>
> v.
Technical Details
Message-ID:
<jfbo35$gq3$1@julia.coi.pw.edu.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.pw.edu.pl!not-for-mailReferences:
<a06e9e8f-2ae6-41a8-b804-31e3ef49e304@d10g2000vbh.googlegroups.com> <jeebqu$2r0$1@inews.gazeta.pl> <jel0oj$hbq$1@news.icm.edu.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.pw.edu.pl!not-for-mail From: PawelS <cbrbob@10g.pl> Newsgroups: pl.comp.lang.javascript Subject: Re: Funkcja korzystająca z instrukcji switch Date: Fri, 20 Jan 2012 13:52:51 +0100 Organization: Warsaw University of Technology Lines: 98 Message-ID: <jfbo35$gq3$1@julia.coi.pw.edu.pl> References: <a06e9e8f-2ae6-41a8-b804-31e3ef49e304@d10g2000vbh.googlegroups.com> <jeebqu$2r0$1@inews.gazeta.pl> <jel0oj$hbq$1@news.icm.edu.pl> NNTP-Posting-Host: 10.5.4.3 Mime-Version: 1.0 X-Trace: julia.coi.pw.edu.pl 1327063973 17219 10.5.4.3 (20 Jan 2012 12:52:53 GMT) X-Complaints-To: usenet@pw.edu.pl NNTP-Posting-Date: Fri, 20 Jan 2012 12:52:53 +0000 (UTC) In-Reply-To: <jel0oj$hbq$1@news.icm.edu.pl> User-Agent: Thunderbird 2.0.0.24 (X11/20110622) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit