Thread View: pl.comp.lang.ruby
3 messages
3 total messages
Started by jrsokolow
Mon, 12 May 2008 21:02
ruby zmienne
Author: jrsokolow
Date: Mon, 12 May 2008 21:02
Date: Mon, 12 May 2008 21:02
26 lines
1859 bytes
1859 bytes
Witam, pytanie odnosi się do następującej sytuacji w kodzie: 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. Teraz drugi przykład 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. Czy moje rozumowanie jest poprawne ? Pozdrawiam.
Re: ruby zmienne
Author: Michał Kurek
Date: Tue, 13 May 2008 06:38
Date: Tue, 13 May 2008 06:38
44 lines
1863 bytes
1863 bytes
W artykule <696441ef-5f66-4fa5-ae45-669d200efb7b@k37g2000hsf.googlegroups.com>, jrsokolow@gmail.com napisał(a): > Witam, > Teraz drugi przykład > > person1 = 'Tomek' > person2 = person1 > person[0] = 'R' > > W tym wypadku zmienia się obiekt na który wskazują zarówno person1 jak > i person2. person1 przechowuje referencje do obiektu klasy String person2 przechowuje referencje do tego samego obiektu: >> person1 = 'Tomek' => "Tomek" >> person2 = person1 => "Tomek" >> person1.object_id => 8950220 >> person2.object_id => 8950220 Zmienne przechowuja referencje do obiektow. Jezeli chcesz utworzyc nowy obiekt na bazie starego: >> person2 = person1.dup => "Tomek" >> person1.object_id => 8950220 >> person2.object_id => 3111910 Jezeli zaczynasz z Rubym to polecam szybki kurs: http://apohllo.pl/dydaktyka/ruby/intro/ Oraz dokumentacja do klasy String: http://www.ruby-doc.org/core/classes/String.html Pozdrawiam Michal Kurek -- http://md6.org/ http://linuxlinki.md6.org/
Re: ruby zmienne
Author: 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
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads