ada
Types paramétrables
Recherche…
Introduction
Tous les types composites autres que les tableaux peuvent avoir des discriminants, qui sont des composants avec des propriétés spéciales. Les discriminants peuvent être de type discret ou de type accès. Dans ce dernier cas, le type d'accès peut être un type d'accès nommé ou être anonyme. Un discriminant d'un type d'accès anonyme est appelé discriminant d'accès par analogie avec un paramètre d'accès.
Types d'enregistrement discriminés
Dans le cas d'un type d'enregistrement discriminé, certains composants sont appelés discriminants et les composants restants peuvent en dépendre. Les discriminants peuvent être considérés comme paramétrant le type, et la syntaxe révèle cette analogie. Dans cet exemple, nous créons un type qui fournit une matrice carrée avec un paramètre positif comme suit:
type Square(X: Positive) is
record
S: Matrix(1 .. X, 1 .. X);
end record;
Ensuite, pour créer un carré de 3 par 3, appelez simplement Carré comme ceci:
Sq: Square(3);
Structures d'enregistrement variées
Un discriminant d'un type d'enregistrement peut influencer la structure des objets. Un choix de composants peut exister dans un objet selon qu'un discriminant a eu une valeur particulière lors de la création de l'objet. Pour étayer cette variation, la définition d'un type d'enregistrement inclut une distinction par cas qui dépend du discriminant:
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;
Ensuite, créer une boîte pour les bananes,
Box : Basket (Banana);
L'objet Box possède désormais deux composants d'enregistrement en plus de son discriminant, Kind , à savoir Bunch_Size et Bunches_Per_Box .