🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.javascript
Article #51004

Re: Funkcja korzystająca z instrukcji switch

#51004
From: PawelS
Date: Tue, 24 Jan 2012 21:28
125 lines
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-mail
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>

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