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.
私が間違っていることは何か分かりますか?私の現在の理論では、コンストラクターを呼び出すときはまだオブジェクトがないため、少し異なるはずです (オブジェクトまたは protoObject に同じ名前の事前定義された関数があるはずです)。オブジェクトを変更せずに、非標準の名前付きコンストラクターを定義しようとしていますか?