Ada:public 和规范的私有部分分开了?

Ada: public and private part of specification separated?

我了解到Ada规范文件(*.ads)中有一个public部分和一个私有部分,只有public部分应该被编译单元的用户考虑(通常是一个包裹)。

在不同文件中将规范的 public 和私有部分分开实际上并不常见?

所以,最后,这样一个包的用户知道规范层包的内部结构,但不能使用它。我在这儿吗?

感谢和欢呼, 沃尔夫冈

不,Ada 不允许您将包规范的 public 和私有部分分开。

A​​da 最初的首席设计师 Jean Ichbiah 在语言上做了一些工作,实际上将 public、私有(数据结构)和实现部分分开了一个包,但这并没有成为艾达的一部分。

还有:

  • 子包的私有部分和主体可以看到其父包的私有部分。
  • 私有子包的规范可以看到其父包的私有部分。

...所以你不能总是完全忽略包规范的私有部分。

实际例子:

当我编写单元测试时,我喜欢将测试套件放在我正在测试的包的子包中。这样我的测试用例就不仅限于检查包中声明的类型的 public 视图。