变体记录结构

记录类型的判别式可能会影响对象的结构。在对象中可以存在组件的选择,因为当创建对象时,判别式具有特定值。为了支持这种变化,记录类型的定义包括依赖于判别式的情况的区别:

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_SizeBunches_Per_Box