Article View: pl.comp.lang.javascript
Article #51004Re: Funkcja korzystająca z instrukcji switch
From: PawelS
Date: Tue, 24 Jan 2012 21:28
Date: Tue, 24 Jan 2012 21:28
125 lines
4958 bytes
4958 bytes
Vax pisze:
> W dniu 2012-01-24 15:25, PawelS pisze:
>
>> OK tylko, że z tym returnem to trochę pojechałeś,
>> może niezbyt czytelnie wyszedł ten [...inline_ciach...],
>> w założeniu funkcja/metoda ma zwrócić typ boolean,
>
> to trzeba było napisać, że musi być boolean (a potrafisz uzasadnić
> dlaczego?) gdyż sam dokonujesz testowania bliżej nieokreślonej wartości
> (bez przyrównywania do żadnej innej), zatem (być może o tym nie wiedząc
> ;)) posiłkujesz się ekwiwalentami logicznymi innych typów.
wykonuję ściśle określone porównania,
które z pewnych powodów wyciąłem,
>
>> w zależności od wartości jaka się znajdzie w tablicy,
>> a tutaj w tablicy USERPERMISSIONS[string_key]
>> mogą być zapisane różne wartości,
>> także Twój przykład kodu równie dobrze można zapisać:
>> return rand(); :P
>
> coś bzdury gadasz, gdyż poprzednio sam wkleiłeś:
> if ($this->USERPERMISSIONS[...inline_ciach...])
> co w zależności od spełnienia warunku zwraca potem true lub false.
> Zatem true zwrócisz gdy if potraktuje
> $this->USERPERMISSIONS[...inline_ciach...] jako prawdę, i analogicznie
> dla fałszu.
nie zrozumiałeś chyba [...inline_ciach...],
to miało ukryć to i owo, a nie tylko element,
zapisany pod indeksem "...inline_ciach...",
bo tak to po trosze wygląda patrząc na powyższe,
jakbym usunął element wskazujący indeks (string) elementu,
> Jakim cudem return ma zwracać random, a if nie?
bardzo prostym logicznym warunkiem:
tu poniżej porównuję to pole z 1,
chociaż nie zawsze porównanie jest z 1:
if ($this->PROJECTROW['is_public']==1) {
return true;
} else {
return false;
}
tu poniżej sprawdzam nie pustość pola:
if (!empty($this->USERPERMISSIONS['log_time'])) {
return true;
} else {
return false;
}
a tu np: zdarza się jeszcze sprawdzać użytkownik jest adminem:
if (AuthRedmine::getInstance()->isAdmin()) {
/* USER IS ADMIN ($this->AUTHROW[admin]==1) ACCESS GRANTED */
return true;
} else {
return false;
}
teraz zapisz mi to swoim skrótem,
a potem wróć do tego kodu za pół roku,
ciekawe czy wlot zrozumiesz
co miałeś na myśli pół roku temu,
>
> To ode mnie, też gratis, dostaniesz:
>
> return!!$this->USERPERMISSIONS[...inline_ciach...];
>
> ok, masz "po ludzku":
> return(bool)$this->USERPERMISSIONS[...inline_ciach...];
>
> To teraz możesz szukać takiego $bzdet dla którego:
>
> return (bool)$bzdet;
>
> to coś innego niż:
>
> $bzdet?true:false;
>
> albo:
>
> if($bdet){
> return true;
> }else{
> return false;
> };
>
> Ja wiem, że kod ma być przejrzysty, ale przejrzyste to jest pytanie "czy
> pada deszcz" które zwraca "TAK" lub "NIE".
> Nie jest bardziej przejrzyste: "jeżeli pada deszcz odpowiedz TAK w
> przeciwnym przypadku odpowiedz NIE".
>
> Nie martw się, bo widziałem już: "jeżeli odpowiedź na pytanie (czy pada
> deszcz) brzmi TAK to odpowiedz TAK w przeciwnym wypadku odpowiedz NIE".
> Czyli coś w stylu:
>
> if($deszcz==true){
> return true;
> }else{
> return false;
> }
>
> zamiast normalnego:
>
> return $deszcz;
> (z opcjonalnym rzutowaniem typu, gdy $deszcz nie jest boolowskie a na
> wyjściu _musi_ być boolean).
>
> Ty plasujesz się gdzieś pośrodku ;p
>
> Więc zapewne nie napiszesz
> return $x>0;
> tylko sklecisz jakiegoś if'a z dwoma returnami, choć $x>0 samo w sobie
> jest już boolowskie.
>
> v.
> PS. po raz kolejny uprzejmie informuję, że to _nie_ jest
> pl.comp.lang.php, którą też czasami podczytuję ;)
czy jesteś aż tak ograniczony,
że nie widzisz że kod w PHP miał pokazać ideę,
nie chciało mi się go przepisywać na JSa,
więc wkleiłem PHP, ale w sumie w JS też bym go podobnie zapisał,
Technical Details
Message-ID:
<jfn7qh$sgr$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> <jfbo35$gq3$1@julia.coi.pw.edu.pl> <jfcklt$875$1@news.icm.edu.pl> <jfjehq$r02$1@julia.coi.pw.edu.pl> <jflu94$5il$1@mx1.internetia.pl> <jfmf0f$lo5$1@julia.coi.pw.edu.pl> <jfmqb1$j0i$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: Tue, 24 Jan 2012 22:28:53 +0100 Organization: Warsaw University of Technology Lines: 125 Message-ID: <jfn7qh$sgr$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> <jfbo35$gq3$1@julia.coi.pw.edu.pl> <jfcklt$875$1@news.icm.edu.pl> <jfjehq$r02$1@julia.coi.pw.edu.pl> <jflu94$5il$1@mx1.internetia.pl> <jfmf0f$lo5$1@julia.coi.pw.edu.pl> <jfmqb1$j0i$1@news.icm.edu.pl> NNTP-Posting-Host: 10.5.4.3 Mime-Version: 1.0 X-Trace: julia.coi.pw.edu.pl 1327440529 29211 10.5.4.3 (24 Jan 2012 21:28:49 GMT) X-Complaints-To: usenet@pw.edu.pl NNTP-Posting-Date: Tue, 24 Jan 2012 21:28:49 +0000 (UTC) In-Reply-To: <jfmqb1$j0i$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