2013-02-01 15 views
5

W smalltalk istnieje środowisko "przestrzeni roboczej". Z definicji "self" wskazuje obiekt, w którym wykonywana jest obecna metoda. Ale jak mam rozumieć "aktualną metodę", gdy wpisuję fragmenty kodu wewnątrz okna obszaru roboczego? Nie ma bieżącego obiektu działającego w żadnej metodzie lub coś mi umknęło. Ktoś może pomóc?W poszukiwaniu znaczenia "siebie"

+0

Po wpisaniu tekstu w oknie obszaru roboczego i wybraniu go, myślę, że Pharo umieszcza go w bloku kodu. Kiedy klikam na "print-it", wysyłam wiadomość "value" do tego fragmentu. Teraz "self" znajduje się w bloku kodu i nie mamy żadnej wskazówki, w której metodzie obiektu zostanie wykonany blok. – Sharphawk

Odpowiedz

8

Możesz debugować kod, który wykonałeś, a zobaczysz, że kończysz wykonywanie tymczasowej metody na obiekcie. Na przykład w Pharo przestrzeń robocza DoIts tworzy metodę na UndefinedObject (zero). Tak więc tutaj będzie się odnosić do zera.

4

Spróbuj tego eksperymentu: wpisz "self" w obszarze roboczym, wybierz go i wybierz "wydrukuj" z menu kontekstowego. To pokaże ci, do którego obiektu jest związany.

W większości Smalltalks, self will be nil.

Powiązane problemy