Auteur | Message |
---|---|
Administrateur
![]() |
Une astuce en forme d’idiome.
Posons par exemple : Source Ada :package P is S’il est choisi que la définition complète de Instance_Type doit être celle de par exemple Interpretation_1_Type, nous ne pourrons pas l’écrire comme Source Ada :package P is Cette écriture n’est pas légale en Ada, comme le confirme la référence : full_type_declaration [Ada RM 2005 3.2.1(3)]. On pourrait penser à la définition d’un type dérivé : Source Ada :package P is Mais cela nécessitera des conversions de type envahissantes et omniprésentes. L’astuce consiste à définir Instance_Type comme un type Enregistrement constitué d’un unique membre du type voulu initialement comme base du sous‑type. Source Ada :package P is On pourra également abréger le nom du membre, si ça peut rendre la chose plus commode : Source Ada :package P is Bonus : si le type de donnée change peu souvent mais voit ses différentes représentations souvent accédées, on pourra même définir un enregistrement de plusieurs ou toutes ses représentations. Ce qui s’apparente en fait à de la mémoization (un anglicisme, sans équivalent en français stricte). Mais attention alors à se soucier que ses différents membres portant les différentes représentations, soient toujours synchronisés (plus facile à garantir avec la vue privée d’un type). Exemple : Source Ada :package P is |
Administrateur
![]() |
Hibou a écrit : L’astuce consiste à définir Instance_Type comme un type Enregistrement constitué d’un unique membre du type voulu initialement comme base du sous‑type. Et en bonus, ça peut même coller à une interprétation de la notion d’une catégorie de sous‑types. Quand on voit certains sous‑types comme des sous‑ensembles de ce qui compose un type de base, un type enregistrement peut en être une interprétation. Remarque : cette interprétation n’est pas applicable aux sous‑types dont le type de base est un type énuméré ou un type entier, car on ne peut pas représenter la restriction d’un intervalle par une sélection de membres ou de propriétés dans un type enregistrement. Ces sous‑types là s’interprèteraient plutôt comme des prédicats prédéfinis. |