🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: ruby zmienne

#1068
From: Wojciech Piekutowski
Date: Tue, 13 May 2008 09:44
41 lines
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-mail
References: <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