以编程方式查找Raku包中的所有类、语法和角色

如何以编程方式找到 Raku 包中的所有类、语法和角色?(用字符串指定。)

我检查了类似于下面链接的讨论/帖子,但我想出的代码很难使用。(并且不做这项工作。)

  • 元编程:什么、为什么和如何(perl6advent)

  • 第 19 天 – 内省(perl6advent)

  • 如何在运行时在 Raku 中动态访问模块的符号表?(堆栈溢出)

  • 有没有办法在 Perl 6 程序中获取所有已知类型的列表?(堆栈溢出)

动机

我想为 Raku 包自动生成 UML 类图。

请参阅
Raku 包的
PlantUML
图:
ML::StreamsBlendingRecommender。

我考虑了以下步骤:

  • 使用 C++、Java、Kotlin、Raku 等语言制作的软件包中类代码的设计解析器

  • 根据解析结果生成对应的PlantUML代码

(这样的解析器可能并不难推导出。可能DrForr的工作提供了良好的开端。)

但是考虑到 Raku 的内省能力,我应该能够“仅仅”遍历包命名空间和类,而不是解析 Raku 代码。(而不是制作解析器。)

回答

Raku 中没有“中央”类词典。让这个问题更难解决,现在只有关于他们使用的父类和角色的类。但是他们知道从他们继承的任何类。或者,如果您查看一个角色,其他哪些角色和类使用该角色。

因此,乐中的班级和角色是不负责任的父母:-)

我想可能有一种方法可以在 MOP 中做一些诡计,但这可能会产生显着的性能影响并导致内存泄漏(因为许多临时类将不再被垃圾收集,因为记录保存会使其保持活动状态)。


以上是以编程方式查找Raku包中的所有类、语法和角色的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>