🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.ruby
Article #1215

Re: rozrzucić

#1215
From: Radosław Bułat
Date: Wed, 18 Feb 2009 14:55
44 lines
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-mail
References: <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