我试图通过所有方法来使用块
是一个特定的类an_object class methods do: [:n | ....]
为了自动获取参数。
我需要调用sourceCodeAt
来获取方法。但我在变量中将此方法作为String。而不是X我有'X'。如何将它更改为X作为方法实例,以便能够在其上调用sourceCodeAt?
答案 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:方法获取现有方法的源代码并返回一个字符串。如果您已经拥有包含源代码的字符串,请使用它。