Есть #primitiveChangeClassTo:
.
Требуется, чтобы исходный и целевой класс имели одинаковое расположение классов. По какой-то странной причине он ожидает экземпляр целевого класса в качестве параметра, который, однако, не используется.
Так вы бы сделали
d := Object new.
d primitiveChangeClassTo: Dictionary new.
однако это терпит неудачу, так как в словарях есть две переменные экземпляра, а в простых объектах их нет.
Если вы занимаетесь метапрограммированием, вам также может быть интересно использовать любой объект в качестве класса. Я использовал это в Protalk , чтобы реализовать язык на основе прототипов, который работает непосредственно поверх Smalltalk.