变体记录结构
记录类型的判别式可能会影响对象的结构。在对象中可以存在组件的选择,因为当创建对象时,判别式具有特定值。为了支持这种变化,记录类型的定义包括依赖于判别式的情况的区别:
type Fruit is (Banana, Orange, Pear);
type Basket (Kind : Fruit) is
record
case Kind is
when Banana =>
Bunch_Size : Positive;
Bunches_Per_Box : Natural;
when Pear | Orange =>
Fruits_Per_Box : Natural;
end case;
end record;
然后为香蕉创造一个盒子,
Box : Basket (Banana);
Box
对象现在除了判别式 Kind
之外还有两个记录组件,即 Bunch_Size
和 Bunches_Per_Box
。