Re: renames
Laurent GUERBY <[email protected]>
| Newsgroups | gmane.comp.lang.ada.france |
|---|---|
| Message-ID | <[email protected]> |
On Tue, 2005-08-16 at 22:05 +0200, Thomas De Contes wrote:
> Bonjour :-)
>
>
> J'ai :
> p :machin renames s.p(cnd.m);
>
> s et cnd sont des variables
> s.p est un tableau de machin, cnd.m est l'index
>
> Je modifie cnd.m après cette déclaration,
> et apparemment, quand j'utilise p après, cnd.m a l'ancienne valeur,
> cad que qqch aurait été figé au moment de la déclaration du renames
>
> Ca me surprends, parce que je pensais que "renames" c'était uniquement
> un raccourci, et que *tout* était recalculé à chaque fois
>
>
> Est ce que qqn pourrait m'expliquer comment ça marche exactement, svp ?
> quand il y a des fonctions par exemple
renames s'applique a des objets et non a des expressions symboliques
c'est pour ca que tu as ce comportement. Quand il y a des fonctions
c'est l'objet resultat de l'appel initial.
C'est d'ailleur un bon moyen de faire le presque equivalent d'une
affectation sur des objets dont le type est limité privé :
procedure PP is
type T is limited null record;
Tmp : T;
function F return T is
begin
return Tmp;
end F;
-- Y : T := F; -- Illegal
Y : T renames F; -- Legal
begin
null;
end PP;
Sincerement,
Laurent
_______________________________________________
Site WWW de l'association Ada-France: http://www.ada-france.org/
[email protected]
http://www.ada-france.org/mailman/listinfo/ada-france