我需要一些提示/帮助我在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;
感谢您的帮助!
答案 0 :(得分:3)
你需要这样的东西:
type J_String(Size: Positive) is record
Contents : String (1 .. Size);
end record;
与Ada参考手册(ARM 3.7(33))中的一个示例非常吻合。
需要注意的一点是:您的代码(没有判别标准的默认值)意味着一旦创建,您将无法更改Size
的{{1}}。来自ARM的例子,
J_String
允许您更改实例的大小,代价是预先分配type Buffer(Size : Buffer_Size := 100) is
record
Pos : Buffer_Size := 0;
Value : String(1 .. Size);
end record;
个字符(无论如何,使用GNAT)。您不希望使用Buffer_Size
执行此操作;大多数计算机没有2千兆字节的RAM!