我需要一些关于我在 Ada 的一个家庭项目的提示/帮助。所以我需要做一个J_String_Package,但我真的不知道如何表示我的J_string类型。规范要求我:"将J_String类型表示为不透明的判别记录。对于字符串的内部表示形式,请使用标准字符串类型。判别器确定 J_String 类型中包含的字符串的大小。到目前为止,我的.ads:
package J_String_Pkg is
type J_String(Size: Positive) is limited private;
--methods etc
private
type J_String(Size: Positive) is record
--i need some help here!! :)
end record;
end J_String_Pkg;
感谢您的帮助!
你需要这样的东西:
type J_String(Size: Positive) is record
Contents : String (1 .. Size);
end record;
这与 Ada 参考手册 (ARM 3.7(33)) 中的一个示例非常吻合。
需要注意的一件事:您的代码没有判别式的默认值,这意味着一旦创建,您将无法更改J_String
的Size
。来自 ARM 的示例,
type Buffer(Size : Buffer_Size := 100) is
record
Pos : Buffer_Size := 0;
Value : String(1 .. Size);
end record;
允许您更改实例的大小,但代价是预分配Buffer_Size
字符(无论如何,使用 GNAT)。你不想用Positive
这样做;大多数计算机没有 2 GB 的 RAM 可用!