Ada中的歧视记录是什么?

时间:2018-06-11 09:15:14

标签: record ada

我正在努力了解Ada中有哪些受歧视的记录,但无法在网上找到明确的答案。

例如,这是一个有区别的记录:

type Discriminated_Record (Size : Natural) is 
    record
       A : String (1 .. Size);
    end record;

2 个答案:

答案 0 :(得分:3)

判别式Size使Discriminated_Record成为歧视性记录。

答案 1 :(得分:2)

这是一个有区别的类型,因为它有一个判别式,它是一个有区别的记录,因为它是一个记录。其他可以具有判别式的类型是任务和受保护类型。

对于有区别的对象,判别式只是另一个组成部分(除了不可变)。所以给出了

type Buffer(Size : Buffer_Size := 100)  is
   record
      Pos   : Buffer_Size := 0;
      Value : String(1 .. Size);
   end record;

B : Buffer (Size => 50);

您可以访问B.Size(与B.Value’Length相同)。