我试图了解 Ada 中有哪些受歧视的记录,但无法在网上找到明确、准确的答案。
例如,是什么使它成为受歧视的记录:
type Discriminated_Record (Size : Natural) is
record
A : String (1 .. Size);
end record;
最佳答案
它是一个可区分的类型,因为它有一个判别式,它是一个可区分的记录,因为它是一个记录。其他可以具有判别式的类型是任务类型和 protected 类型。
对于被判别对象,判别式只是另一个组成部分(除了不可变之外)。如此给定
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
相同)。
关于record - Ada 中的歧视记录是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50794192/