Ada:如何表示 java 字符串?
Ada: How to represent a java string?
我需要一些 tips/help 与我在 Ada 中的家庭项目之一。所以我需要做一个 J_String_Package,但我真的不知道如何表示我的 J_string 类型。规范要求我:"represent J_String type as an opaque discriminant record. For the inner representation of the string, use the Standard String type. The discriminant determines the size of the string that is contained in the J_String type."
到目前为止我的 .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!
我需要一些 tips/help 与我在 Ada 中的家庭项目之一。所以我需要做一个 J_String_Package,但我真的不知道如何表示我的 J_string 类型。规范要求我:"represent J_String type as an opaque discriminant record. For the inner representation of the string, use the Standard String type. The discriminant determines the size of the string that is contained in the J_String type." 到目前为止我的 .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!