#newのメッセージを上書きしようとしていますMyObject。問題は、テキストがコンパイルされると、ローカル変数、dispおよびoldNewがそれぞれに変更されt1(t2私はSqueak 4.3を使用しています)、に送信できないことoldNewですself。
名前を変更することはできますが、それが良い考えかどうかはわかりません。これが私が持っているものの基本的な概要です:
MyObject class methodDict at: #new put:
(Object compilerClass new
compile: 'new
| disp oldNew |
oldNew := MyObject class methodDict at: #new.
disp := Dispatcher new.
^disp xxxViewedObject: self oldNew'
in: MyObject
notifying: nil
ifFail: []) generate
私がしていることが正しい方法であるかどうかは100%わかりませんので、他のアイデアを歓迎します。
oldNew編集:OK、それでメッセージとして探していたことがわかりましMyObjectたが、コンパイルされたメソッドを実行するにはどうすればよいですか?