#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
たが、コンパイルされたメソッドを実行するにはどうすればよいですか?