Это дискриминируемый тип , потому что у него есть дискриминант, и это дискриминированная запись , потому что это запись.Другими типами, которые могут иметь дискриминанты, являются задачи и защищенные типы.
Для дискриминируемого объекта дискриминант - это просто еще один компонент (кроме того, что он неизменен).Таким образом, с учетом
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
).