Article View: pl.comp.lang.ruby
Article #1215Re: rozrzucić
From: Radosław Bułat
Date: Wed, 18 Feb 2009 14:55
Date: Wed, 18 Feb 2009 14:55
44 lines
2493 bytes
2493 bytes
Bronisław Tatul pisze:
>> arr = (1..10).to_a
>> arr.shuffle!
>
> ten wykrzyknik coś daje?
Ruby pozwala na dołączenie do nazwy metody, na końcu znaku '?' lub '!'.
'?' wykorzystuje się do metod predykatów, np. zamiast nazywać metody
'is_red', 'is_awesome' wskazane (ale nie ma przymusu) jest napisać
'red?', 'awesome?'.
Dla wykrzyknika natomiast przyjęło się, że używa się go dla metod
'niebezpiecznych'. Najczęściej chodzi o metody, które zmieniają stan
obiektu lub robią coś bardziej niebezpiecznego niż odpowiednia metoda
bez wykrzyknika. Zwracam jednak uwagę na to, że bardzo często
programiści źle interpretują tą regułę, tj. zapominają o części "niż
odpowiednia metoda bez wykrzyknika". Umieszczanie samej metody z
wykrzyknikiem bez wersji jego pozbawionej nie ma sensu. Inaczej
kończylibyśmy na prawie samych metodach z wykrzyknikiem.
Taki życiowy przykład z rails. ActiveRecord posiada 2 wersje metody
zapisującej: save i save!. Ta pierwsza zwraca true/false w zależności do
tego czy zapis się powiódł. Ta druga rzuca wyjątkiem w przypadku
niepowodzenia.
I jeszcze dla jasności: dla rubiego to bez znaczenia czy Twoja metoda
zawiera '?' czy '!' lub żaden z nich. To informacja dla programisty.
>
>> Wcześniej:
>>
>> arr = (1..10).to_a
>> arr = arr.sort_by { rand }
>
>
> Bardzo dziękuję.
>
> Ciekawe czy jest coś takiego jak receptury dla ruby.
http://pleac.sourceforge.net/pleac_ruby/
--
Radosław Bułat
http://radarek.jogger.pl - mój blog
Technical Details
Message-ID:
<gnh7hc$spa$1@inews.gazeta.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mailReferences:
<gngc3r$t4t$1@atlantis.news.neostrada.pl> <gngr0v$eu$1@inews.gazeta.pl> <gnh2lk$oen$1@atlantis.news.neostrada.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail From: Radosław Bułat <radarrek@poczta.fm> Newsgroups: pl.comp.lang.ruby Subject: Re: rozrzucić Date: Wed, 18 Feb 2009 15:55:39 +0100 Organization: "Portal Gazeta.pl -> http://www.gazeta.pl" Lines: 44 Message-ID: <gnh7hc$spa$1@inews.gazeta.pl> References: <gngc3r$t4t$1@atlantis.news.neostrada.pl> <gngr0v$eu$1@inews.gazeta.pl> <gnh2lk$oen$1@atlantis.news.neostrada.pl> NNTP-Posting-Host: chello089074175199.chello.pl Mime-Version: 1.0 X-Trace: inews.gazeta.pl 1234968940 29482 89.74.175.199 (18 Feb 2009 14:55:40 GMT) X-Complaints-To: usenet@agora.pl NNTP-Posting-Date: Wed, 18 Feb 2009 14:55:40 +0000 (UTC) X-User: radek.bulat In-Reply-To: <gnh2lk$oen$1@atlantis.news.neostrada.pl> User-Agent: Thunderbird 2.0.0.19 (X11/20090105) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit