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