Можно ли расширить отдельный объект в Smalltalk?

Я занимаюсь исследованием умений Smalltalk, и мне было интересно, возможно ли расширить отдельный объект, например, в Ruby. Под этим я подразумеваю селектор, на который отвечают только определенные объекты.

Вот код Ruby, в котором говорится, что я имею в виду. Для пояснения: в Ruby это открывает виртуальный класс для этого объекта и расширяет его новым определением. Жизненно важной частью здесь является то, что ничего не меняется в определении класса!

o = Object.new
o.instance_eval {def foo;puts "foo";end}
o.foo #=> "foo"

#however this will fail:
m = Object.new
m.foo #=> NoMethod error

Более конкретно, мой вопрос заключается в том, возможно ли это в стандартных реализациях Squeak / Pharo или других реализациях Smalltalk, без добавления существенных структур или кода, позволяющих это сделать. Так что с другими словами с регулярными отражающими функциями, которые существуют в Smalltalk.

Например, можно добавить методы, удалить методы, скомпилировать новый код в класс, изменить переменные экземпляра и почти все, но я не нашел способа расширить один объект.

Test addInstVarNamed: #var.
Test compile: 'var ^var'.
t:= Test new.
Test instVarNames.
t instVarNamed: #var put: 666. 
t var. #=> 666

Если ответ нет, то объясните почему. Я не ищу решение этой проблемы, а скорее понимаю, почему это не в разговоре.

Ответы на вопрос(6)

Ваш ответ на вопрос