🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Funkcja korzystająca z instrukcji switch

#51003
From: Vax
Date: Tue, 24 Jan 2012 17:39
79 lines
3514 bytes
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.

> 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.
Jakim cudem return ma zwracać random, a if nie?

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ę ;)
Technical Details
Message-ID: <jfmqb1$j0i$1@news.icm.edu.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!.POSTED!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>

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: Tue, 24 Jan 2012 18:39:38 +0100
Organization: ICM, Uniwersytet Warszawski
Lines: 79
Message-ID: <jfmqb1$j0i$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> <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>
NNTP-Posting-Host: 89-68-3-67.dynamic.chello.pl
Mime-Version: 1.0
X-Trace: news.icm.edu.pl 1327426721 19474 89.68.3.67 (24 Jan 2012 17:38:41 GMT)
X-Complaints-To: usenet@news.icm.edu.pl
NNTP-Posting-Date: Tue, 24 Jan 2012 17:38:41 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:9.0) Gecko/20111222 Thunderbird/9.0.1
In-Reply-To: <jfmf0f$lo5$1@julia.coi.pw.edu.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit