Ada 中的歧视记录是什么?

zyt*_*hon 3 record ada

我试图了解 Ada 中的歧视记录是什么,但在网上找不到明确、准确的答案。

例如,是什么使得此记录成为受歧视的记录:

type Discriminated_Record (Size : Natural) is 
    record
       A : String (1 .. Size);
    end record;
Run Code Online (Sandbox Code Playgroud)

Sim*_*ght 5

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

\n\n

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

\n\n
type Buffer(Size : Buffer_Size := 100)  is\n   record\n      Pos   : Buffer_Size := 0;\n      Value : String(1 .. Size);\n   end record;\n\nB : Buffer (Size => 50);\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以访问B.Size(这将与B.Value\xe2\x80\x99Length)。

\n