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_StringSize。来自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!