oop - 以编程方式查找 Raku 包中的所有类、语法和角色
问题描述
如何以编程方式找到 Raku 包中的所有类、语法和角色?(用字符串指定。)
我检查了类似于下面链接的讨论/帖子,但我想出的代码很难使用。(并且不做这项工作。)
元编程:什么、为什么以及如何(perl6advent)
第 19 天——内省(perl6advent)
如何在 Raku 运行时动态访问模块的符号表?(堆栈溢出)
动机
我想为 Raku 包自动生成 UML 类图。
请参阅 Raku 包 的PlantUML 图: ML::StreamsBlendingRecommender。
我考虑了以下步骤:
使用 C++、Java、Kotlin、Raku 等语言制作软件包中的类代码的设计解析器
在解析结果上生成对应的 PlantUML 代码
(这样的解析器可能并不难推导出来。也许DrForr的工作提供了良好的开端。)
但鉴于 Raku 的自省能力,我应该能够“仅”遍历包名称空间和类,而不是解析 Raku 代码。(而不是制作解析器。)
解决方案
Raku 中没有“中央”类词典。并且使问题更难解决,现在只对他们的父类和他们使用的角色进行类。但是他们不知道从他们那里继承的任何类。或者,如果您查看一个角色,哪些其他角色和类会使用该角色。
因此,Raku 中的班级和角色是不负责任的父母 :-)
我想可能有一种方法可以在 MOP 中做一些诡计,但这可能会产生显着的性能影响并导致内存泄漏(因为许多临时类将不再被垃圾收集,因为记录保存会使它保持活动状态)。
推荐阅读
- python - 使用 cmap 在 opencv 中保存 16 位图像(cv::ColorMap 仅支持函数 'operator()' 中的 CV_8UC1 或 CV_8UC3 类型的源图像)
- java - 使用 JBoss 连接 EJB
- http - 错误:flutter/lib/ui/ui_dart_state.cc(157) 未处理的异常:输入“未来”
' 不是类型 'FutureOr 的子类型 - python - 如何使用 Python 使用 Selenium 选择没有 ID 的下拉菜单值?
- asp.net-core - 未找到 IEndpointRouteBuilder 接口
- java - Java:将多个字符串日期时间格式解析为 LocalDateTime/Date/Calender
- python - 如何使用熊猫数据框实现以下输出?
- docker - Docker swarm 服务日志输出停止
- c# - 初始化时未调用EntityFramework核心`OnConfiguring`
- excel - 具有 3 个相互链接的命令按钮的 vba 宏