私は、実行時に squeak でメソッドを変更する小さなプログラムを書いています。squeak には、コンパイルされたgetSource
メソッドのソース コードを返す (CompiledMethod クラスで定義されている) というメソッドがあることがわかりました。
入力がメソッドに対応するシンボルの場合、メソッドのソース コードを取得するにはどうすればよいですか?
CompiledMethod
メソッドが定義されているクラスを知っている必要があります。次に、ビアにアクセスできます。
theClass >> methodSelectorSymbol
また
theClass compiledMethodAt: methodSelectorSymbol
メソッドを持つtheClass
クラスでありmethodSelectorSymbol
、メソッド、つまり入力に対応する Symbol です。さらなるアプローチもあります。例えば、
theClass lookupSelector: methodSelectorSymbol
検索するだけでtheClass
なく、そのスーパークラスも検索します。
ただし、すべてのアプローチでは、開始点としてクラスを指定する必要があります。