繁体   English   中英

如何要求对象以字符串形式返回其类和方法源?

[英]How to ask an object to return its class and methods source as a string?

我想找到一个类及其方法的源(也包括所有变量,局部变量,实例,类,类实例等) ,并将它们作为字符串或字符串集合返回。

我找到了MethodNode>>sourceTextCompiledMethod>>sourceCode但是我不知道如何发送这些消息或它们是否是我正在寻找的消息。

同样,关于如何使用诸如AST类的代码通过代码来导航Pharo语法的任何指针也将不胜感激。

首先询问对象的类,然后询问例如此类中定义的所有方法,然后收集每个方法的源代码:

'Pharo' class methods collect: [ :each | each sourceCode ]

您可以在Behavior访问协议Class的超类)中找到与该类的其他属性有关的方法。

除了马丁的答案之外,还有其他方法可以例如

(Object compiledMethodAt: #printString) sourceCode

将返回特定方法的源代码。

如果我们想使用方法的AST浏览语法:

( Object compiledMethodAt: #halt ) ast nodesDo:[ :node |  node inspect].

看一下RBProgramNode及其相关的子类,以了解导航和处理源代码的可能性。

并且,根据您的确切需求,您应该注意特征,扩展方法和超类中定义的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM