任何静态初始化 Ada 2012 Map 的方法

Any way to statically initialize an Ada 2012 Map

我正在尝试创建一个全局地图,该地图可以被构建关卡的过程引用。

如果可以在规范 (.ads) 中静态填充此全球地图,那就太理想了。

这是我尝试猜测如何执行静态初始化部分的一些错误代码:

package Positive_to_Positive_Type is new Ada.Containers.Formal_Ordered_Maps
  (Key_Type => Positive,
   Element_Type => Positive);

Positive_to_Positive : Positive_to_Positive_Type.Map :=
  ((1 => 11),
   (2 => 12));

报错如下:

expected private type "Ada.Containers.Formal_Ordered_Maps.Map" from instance at line 1
found a composite type

现在我知道我正在应用类似记录的语法来尝试初始化动态结构,甚至可以使用 .ads 中的值初始化映射,还是必须始终使用插入等来完成在 adb 中?

谢谢。

您可以在包初始化级别执行此操作。 假设您在包规范 'A' 中声明了 Positive_to_Positive 和 Positive_to_Positive_Type,您的包体可能如下所示:

package body A is
begin
   Positive_to_Positive.Insert (1, 11)
   Positive_to_Positive.Insert (2, 12)
end A;