代码之家  ›  专栏  ›  技术社区  ›  zython Hiery Nomus

什么是ADA中的歧视记录?

  •  0
  • zython Hiery Nomus  · 技术社区  · 6 年前

    我试图了解ADA中有哪些受歧视的记录,但在网上找不到明确、准确的答案。

    例如,是什么使它成为一个受歧视的记录:

    type Discriminated_Record (Size : Natural) is 
        record
           A : String (1 .. Size);
        end record;
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   Simon Wright    6 年前

    这是一种歧视 类型 因为它有一个鉴别器,而且它是一个鉴别器 记录 因为这是一个记录。可以区分的其他类型是任务类型和受保护类型。

    对于一个被区别的对象,区别只是另一个组件(除了不可变之外)。因此给出

    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 )

        2
  •  3
  •   Jacob Sparre - at CLDK    6 年前

    歧视者, Size 使 Discriminated_Record 受歧视的记录