Jestem nowym przybyszem do Smalltalk i nauczyłem się tego w pisowni. Ale w Smalltalk wiele rzeczy jest mylących. W Squeak, MetaClass
i MetaClass class
wzajemnie sobie odpowiadają. Jeśli chcę utworzyć obiekt MetaClass
powinienem wysłać wiadomość new
do jej klasy, która jest MetaClass class
. Ale musiało już istnieć jako obiekt, aby zaakceptować wiadomość. Dlatego najpierw muszę utworzyć obiekt MetaClass class
, który można wykonać tylko wysyłając wiadomość new
do obiektu MetaClass
, która nie została jeszcze utworzona. Jest to więc problem z kurczakiem lub jajkiem.Niespójności w smalltalk
Oczywiście mogę teraz tworzyć obiekty w Squeaku, ponieważ obiekty MetaClass
i MetaClass class
zostały już utworzone automatycznie, gdy skrzypienie zostanie otwarte. Ale nie wiem jak. Być może są one tworzone w jakiś sposób raczej poprzez wysyłanie wiadomości. Ale to jest sprzeczne z duchami Smalltalk: wszystko dzieje się poprzez wysyłanie wiadomości z wyjątkiem kilku punktów (deklaracja zmiennych, przypisania, zwroty i prymitywy).
Czy jest coś nie w porządku z powyższym rozumowaniem? Z góry dziękuję.
Czy po zdefiniowaniu klasy, takiej jak "A", obiekt 'A' zostanie utworzony przez system Smalltalk i zostanie zapisany na obrazie podczas zamykania? – spockwang
Tak, po zapisaniu obrazu obiekt klasy "A" przetrwa. – Tobias