Я пытаюсь реализовать новый класс в Squeak, и по какой-то причине, когда я запускаю тест, я получаю сообщение об ошибке MessageNotUnderstood, даже если сообщение определено.
Код класса:
Object subclass: #ClassAnalyzer
instanceVariableNames: 'theClasses'
classVariableNames: ''
poolDictionaries: ''
category: 'OOP3'!
!ClassAnalyzer methodsFor: 'initialize-release' stamp: 'NK 11/30/2009 22:50'!
initialize: setOfClasses
theClasses := setOfClasses.! !
!ClassAnalyzer methodsFor: 'initialize-release' stamp: 'NK 11/30/2009 22:49'!
newWith: input
[input isKindOf: Collection]
ifFalse: [^ClassAnalyzer new: input].
^ClassAnalyzer new: (input asSet).! !
И вот тест, который я провел:
| abcd z |
z:=1class.
abcd:= ClassAnalyzer newWith: z.
Есть идеи, что я делаю не так?
Моя текущая теория состоит в том, что, поскольку при вызове конструктора еще нет объекта, поэтому он должен быть немного другим (возможно, в Object или protoObject должна быть предопределенная функция с тем же именем), но если это так, то как бы один определить неопределенный именованный конструктор без изменения объекта?