Les delta aggregates en △da₂₀₂₂
Ada₂₀₂₂ a introduit la notion de delta aggregate permettant de modifier un objet sans passer nécessairement par une ou des données intermédiaires.
Cette fonctionnalité s’applique aussi bien aux structures qu’aux tableaux unidimensionnels.
Exemple¶
Soit la procédure permettant de trier un vecteur d’entiers :
procedure Sort (Vector : in out Vector_T) is Tmp : Integer; begin for I in Vector'First .. Positive'Pred (Vector'Last) loop for J in Positive'Succ (I) .. Vector'Last loop if Vector (J) < Vector (I) then Tmp := Vector (I); Vector (I) := Vector (J); Vector (J) := Tmp end if; end loop; end loop; end Sort;
Ici, on peut constater que la permutation de deux éléments de notre
vecteur nécessite de passer par une variable temporaire (ici Tmp
).
En Ada₂₀₂₂ nous aurions pu simplement écrire :
procedure Sort (Vector : in out Vector_T) is begin for I in Vector'First .. Positive'Pred (Vector'Last) loop for J in Positive'Succ (I) .. Vector'Last loop if Vector (J) < Vector (I) then Vector := [Vector with delta I => Vector (J), J => Vector (I)]; end if; end loop; end loop; end Sort;
Ce qui apporte aussi de la concision et de la lisibilité à notre code.
Commentaires