2

私は、実行時に squeak でメソッドを変更する小さなプログラムを書いています。squeak には、コンパイルされたgetSourceメソッドのソース コードを返す (CompiledMethod クラスで定義されている) というメソッドがあることがわかりました。

入力がメソッドに対応するシンボルの場合、メソッドのソース コードを取得するにはどうすればよいですか?

4

1 に答える 1

3

CompiledMethodメソッドが定義されているクラスを知っている必要があります。次に、ビアにアクセスできます。

theClass >> methodSelectorSymbol

また

theClass compiledMethodAt: methodSelectorSymbol

メソッドを持つtheClassクラスでありmethodSelectorSymbol、メソッド、つまり入力に対応する Symbol です。さらなるアプローチもあります。例えば、

theClass lookupSelector: methodSelectorSymbol

検索するだけでtheClassなく、そのスーパークラスも検索します。

ただし、すべてのアプローチでは、開始点としてクラスを指定する必要があります。

于 2013-05-03T11:05:05.870 に答える