2013-03-25 10 views
5

Jestem początkującym Smalltalk, obecnie grającym z Pharo i jestem ciekawy wyboru w wiadomości podklasy: słowo kluczowe instanceVariableNames chce coś, co jest w stanie odpowiedzieć na komunikat subStrings . Zastanawiam się, dlaczego nie oczekuje czegoś bardziej uporządkowanego jak tablica, ponieważ potrzebny jest zbiór symboli.Dlaczego instanceVariableNames jest ciągiem, a nie bardziej uporządkowaną kolekcją

Object subclass: #Experiment instanceVariableNames: #(#foo #bar). 

My zgadywania tylko na to jakiś historyczny powód: może nie wszystkie Smalltalks mają tablic lub ich składnia różni się znacznie wsunąć do wewnętrznej wiadomości jako podklasy. Czy jest jakieś inne wytłumaczenie?

Odpowiedz

2

Tak, to trochę dziwne. Myślę, że głównym powodem jest to, że potrzebuje nazw, więc podczas tworzenia klasy kompilator analizuje ciąg znaków i pobiera nazwy jako podciągi. Nie musisz też sprawdzać, czy ktoś przekazał ci tablicę z liczbami lub innymi tablicami.

Co do samej tablicy, był obecny w specyfikacji Smalltalk-80, więc są one dość powszechne. (Nie jako dynamiczne tablice { expr1 . expr2 . expr3} które zostały wprowadzone w Squeakiem.

Ponadto istnieje wiele dziwnych rzeczy. Na przykład teraz Pharo wykorzystuje Parser że jest podklasą Scanner ... Ty, który ma wkrótce zmienić .

+0

Rzeczywiście, nowy ClassBuilder zaakceptuje prawdziwe tablice dla nazw zmiennych instancji. – camillobruni