record - Ada 中的歧视记录是什么?

标签 record ada

我试图了解 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/

相关文章:

.net - F# 在隐藏记录类型中引发警告

xml - 为 F# 记录值生成的 IntelliSense XML 不正确 (VS2013)

c++ - 从文件中删除记录 C++

arrays - 尝试将结构数组保存到文件并从文件加载(序列化、反序列化)

ada - 如何将新库添加到 GNAT Studio?

apache - 在 Unix 网络服务器上运行的 Ubuntu 编译程序

ada - Gpr 文件,不包括源中的所有目录

package - Ada:如何组织嵌套包

ada 指向局部变量编译和运行时错误的指针

php - 如何从 php mysql 中的先前记录获取总计