在String变量x ='X'上调用sourceCodeAt。如何将其更改为X?

时间:2013-11-24 22:04:08

标签: smalltalk pharo

我试图通过所有方法来使用块

是一个特定的类
an_object class methods do: [:n | ....]

为了自动获取参数。 我需要调用sourceCodeAt来获取方法。但我在变量中将此方法作为String。而不是X我有'X'。如何将它更改为X作为方法实例,以便能够在其上调用sourceCodeAt?

2 个答案:

答案 0 :(得分:2)

好的,看看:#methods发送给类对象的消息(行为子类)将返回CompiledMetod个实例的集合。我不知道 get parameters 是什么意思,但是(至少在Pharo3中)你可以将#argumentNames发送到CompiledMetod以获取参数的名称。否则,您可以发送#selector以获取表示方法的选择器(名称)的符号。当然,当你打印它时,你会得到 Class>>方法,因为它的定义与#printOn:类的CompiledMetod方法中的定义类似。

如果您想获取方法的源代码,只需询问方法即可。 E.I:

an_object class methods do: [ :method | method sourceCode ....]

答案 1 :(得分:1)

如果您已在字符串中包含源代码,则不需要“sourceCodeAt:”。只需使用你拥有的字符串。 sourceCodeAt:方法获取现有方法的源代码并返回一个字符串。如果您已经拥有包含源代码的字符串,请使用它。