通用订单

0 ada

假设我们有一个类型:

type ABC is (A, B, C);
type BAC is (B, A, C);
type CBA is (C, B, A);
Run Code Online (Sandbox Code Playgroud)

有没有办法用参数 Order 声明通用包:

generic
   type Order is ...
package Pkg
    
   type Value_Type is ...
    
   type Value_Type_Array is array (Order) of Value_Type;
    
end Pkg;
Run Code Online (Sandbox Code Playgroud)

实例化后我可以有 3 种不同的类型:

AA : Package_ABC.Value_Type_Array;
BB : Package_BAC.Value_Type_Array;
CC : Package_CBA.Value_Type_Array;
Run Code Online (Sandbox Code Playgroud)

更新:我忘了说我想在程序中使用这些类型的值。如果我们说 X、Y 和 Z 是 Value_Type 类型的变量:

begin
   AA (A) := X;
   AA (B) := Y;
   AA (C) := Z;
   ...
   BB (B) := X;
   BB (A) := Y;
   BB (C) := Z;
   ...
   CC (C) := X;
   CC (B) := Y;
   CC (A) := Z;
   ...
Run Code Online (Sandbox Code Playgroud)

结尾;

egi*_*lhh 5

枚举类型是离散类型(如整数类型),因此您可以这样做:

generic
   type Order is (<>);
package Pkg
Run Code Online (Sandbox Code Playgroud)

  • @JimLewis,不,这是 Ada(如问题标签所示),虽然 VHDL 基于 Ada 语法,但这在 Ada 83 中已经有效 (4认同)