Ada 相当于 Python 的 dir() 方法



有没有办法在 Ada 中查看类型的属性?到目前为止,我还没有找到任何东西。我希望能够将类型传递到具有一些相应 XML 的泛型函数中,并将一个类型解析为另一个,而无需为每个记录编写定制函数。显然,我需要告诉解析器如何执行基本类型,但我希望自动处理复合。如果我从头开始这样做,Python 的dir()方法似乎是我在 Python 中使用的方法,那么有没有更好的方法来完全做到这一点,或者 Ada 中是否有等效的dir()

Ada 没有元编程工具,也没有反射(这就是 Java/C# 中这些事情的完成方式(。由于类型系统在很大程度上只存在于编译时,因此您无法在运行时查询太多信息,当然也不是您需要的信息类型。您不能简单地使用泛型函数来执行此操作。

最好的办法可能是从XML模式生成Ada代码,或者(如果Ada类型定义了XML结构(使用ASIS或libadalang从Ada类型的AST生成解析代码。请注意,这相当复杂,除非您熟悉处理 AST,否则我不建议这样做。如果可以编写 XML 模式,我宁愿使用该模式来生成 Ada 类型和相应的加载代码。

类型具有哪些属性取决于它是哪种类型:

  • 离散类型
  • 浮点类型
  • 定点类型
  • 阵列类型
  • 受区分的类型

最新更新