變體記錄結構

記錄型別的判別式可能會影響物件的結構。在物件中可以存在元件的選擇,因為當建立物件時,判別式具有特定值。為了支援這種變化,記錄型別的定義包括依賴於判別式的情況的區別:

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