Подкласс: обычный метод в Squeak? - PullRequest
2 голосов
/ 06 марта 2020

Похоже, что создание нового подкласса в Squeak выполняется путем отправки сообщения суперклассу:

Object subclass: #Boolean
    instanceVariableNames: ''
    classVariableNames: ''
    poolDictionaries: ''
    category: 'Kernel-Objects'

Где я могу посмотреть на реализацию этого метода? Я не могу найти его ни в Object, ни в ProtoObject списке методов класса.

1 Ответ

5 голосов
/ 07 марта 2020

Да, это обычное сообщение. Реализация находится в классе под названием Class. Вы можете найти его реализацию, выбрав имя сообщения в любом определении класса (например, в сообщении, которое вы опубликовали в вопросе) и вызовите действие «developers of it» (Cmd-m) или во всплывающем меню, если вы удерживаете Shift во время нажатия ).

Вы обнаружите, что он делегирует ClassBuilder, где вы можете увидеть, как появляются новые классы.

Обратите внимание, что вы отправляете сообщение классу Object , а не к экземпляру Object. Вот почему вы не нашли метод в Object или ProtoObject. Вам лучше поискать метод в Object class, который является метаклассом Object, и он наследуется от Class.

...