[英]How to ask an object to return its class and methods source as a string?
我想找到一个类及其方法的源(也包括所有变量,局部变量,实例,类,类实例等) ,并将它们作为字符串或字符串集合返回。
我找到了MethodNode>>sourceText
和CompiledMethod>>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.