【发布时间】:2014-05-17 21:09:26
【问题描述】:
假设我有一个通用向量库。为了方便使用,我想实例化各种常用形式的向量库,并在单个包中可见。
我正在尝试这个:
with GenericVector;
package Vectors is
package Vectors3 is new GenericVector(3);
use all type Vectors3.Vector;
subtype Vector3 is Vectors3.Vector;
package Vectors4 is new GenericVector(4);
use all type Vectors4.Vector;
subtype Vector4 is Vectors4.Vector;
end;
最终目标是我希望能够做到 with Vectors; use Vectors; 并最终得到 Vector3 和 Vector4 直接可用的 Just Work 类型。
当然,上面的代码不起作用。看起来use all type 语句将附加到指定类型的定义导入到包规范中,但这些定义并没有导出给Vectors 的用户。我必须改用with Vectors; use Vectors; use all type Vectors.Vectors3;。这有点糟糕。
我该怎么做?
【问题讨论】:
-
包中的
use子句只允许您在包内使用类型,并导出您声明的子类型。除了use Vectors,您将能够在包外声明Vector3变量,但不会导出对子类型的所有操作,因此您将无法在包外使用V1 + V2。跨度>