ada
Parametrisierte Typen
Suche…
Einführung
Alle zusammengesetzten Typen außer Arrays können Diskriminanten aufweisen, dh Komponenten mit besonderen Eigenschaften. Diskriminanten können diskrete Typen oder Zugriffstypen sein. Im letzteren Fall kann der Zugriffstyp ein benannter Zugriffstyp oder anonym sein. Eine Diskriminante eines anonymen Zugriffstyps wird in Analogie zu einem Zugriffsparameter als Zugriffsdiskriminante bezeichnet.
Diskriminierte Datensatztypen
Im Falle eines diskriminierten Datensatztyps sind einige der Komponenten als Diskriminanten bekannt und die übrigen Komponenten können von diesen abhängen. Man kann sich vorstellen, dass die Diskriminanten den Typ parametrisieren, und die Syntax offenbart diese Analogie. In diesem Beispiel erstellen wir einen Typ, der eine quadratische Matrix mit einem positiven as-Parameter bereitstellt:
type Square(X: Positive) is
record
S: Matrix(1 .. X, 1 .. X);
end record;
Um ein Quadrat von 3 x 3 zu erstellen, rufen Sie einfach den Typ Square wie folgt auf:
Sq: Square(3);
Variantensatzstrukturen
Eine Diskriminante eines Datensatztyps kann die Struktur von Objekten beeinflussen. Eine Auswahl von Komponenten kann in einem Objekt vorhanden sein, da ein Diskriminant bei der Erstellung des Objekts einen bestimmten Wert hatte. Um diese Variation zu unterstützen, umfasst die Definition eines Datensatztyps eine Unterscheidung nach Fällen, die von der Diskriminanz abhängen:
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;
Dann eine Box für Bananen erstellen,
Box : Basket (Banana);
Das Box Objekt hat jetzt zusätzlich zu seiner Diskriminante Kind zwei Datensatzkomponenten, nämlich Bunch_Size und Bunches_Per_Box .