Article View: pl.comp.lang.ruby
Article #1068Re: ruby zmienne
From: Wojciech Piekutowski
Date: Tue, 13 May 2008 09:44
Date: Tue, 13 May 2008 09:44
41 lines
2526 bytes
2526 bytes
On May 13, 12:02 am, jrsoko...@gmail.com wrote: > person1 = 'Tomek' > person2 = person1 > person1 = 'Romek' > > W tym przypadku zmienia się wartość jedynie referencji person1. I to > jest dla mnie jasne. Od momentu wykonania linijki numer 3, referencja > person1 wskazuje na inny obiekt. Dokładnie. > person1 = 'Tomek' > person2 = person1 > person[0] = 'R' > > W tym wypadku zmienia się obiekt na który wskazują zarówno person1 jak > i person2. Czy rozumiem iż poprzez odwołanie w postaci person1[0] > odwołujemy się konkretnie do obiektu na jaki wskazują referencje > person1 i person2. person1[0] = 'R' # jest to w rzeczywistości wywołanie metody []= z argumentami: 0, 'R' na obiekcie do którego odnosi się person1 Można napisać też: person1.[]=(0, 'R') Pierwsz zapis to tak zwany 'syntactic sugar'. Metoda instancyjna []=(index, nowy_napis) klasy String zamienia część napisu pod index na nowy_napis. Referencje Ruby działają tak samo jak w Javie. Różnica jest taka, że w Javie są 2 rodzaje zmiennych: referencje do obiektów i prymitywy (liczy całkowite, itd...). W Ruby mamy tylko referencje więc mówimy na nie po prostu zmienne. Pisząc . po zmiennej wywołujesz metodę na konkretnym obiekcie. Przykład a = 1 b = 2 c = a + b d = a.+(b) c == d # => true Pozdrawiam, Wojciech Piekutowski
Technical Details
Message-ID:
<9779cd5f-3ddf-46ea-a8b3-b8ee3c225930@j22g2000hsf.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!newsfeed.straub-nv.de!proxad.net!feeder1-2.proxad.net!64.233.178.134.MISMATCH!postnews.google.com!j22g2000hsf.googlegroups.com!not-for-mailReferences:
<696441ef-5f66-4fa5-ae45-669d200efb7b@k37g2000hsf.googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!newsfeed.straub-nv.de!proxad.net!feeder1-2.proxad.net!64.233.178.134.MISMATCH!postnews.google.com!j22g2000hsf.googlegroups.com!not-for-mail From: Wojciech Piekutowski <w.piekutowski@gmail.com> Newsgroups: pl.comp.lang.ruby Subject: Re: ruby zmienne Date: Tue, 13 May 2008 02:44:10 -0700 (PDT) Organization: http://groups.google.com Lines: 47 Message-ID: <9779cd5f-3ddf-46ea-a8b3-b8ee3c225930@j22g2000hsf.googlegroups.com> References: <696441ef-5f66-4fa5-ae45-669d200efb7b@k37g2000hsf.googlegroups.com> NNTP-Posting-Host: 62.237.187.242 Mime-Version: 1.0 X-Trace: posting.google.com 1210671851 12475 127.0.0.1 (13 May 2008 09:44:11 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Tue, 13 May 2008 09:44:11 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: j22g2000hsf.googlegroups.com; posting-host=62.237.187.242; posting-account=Q2pglAoAAAAVAvWFei12zfeIQg8qCJNr User-Agent: G2/1.0 X-HTTP-UserAgent: Opera/9.27 (X11; Linux i686; U; en),gzip(gfe),gzip(gfe) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit